access to preallocated block of memory?

Bengt Richter bokr at oz.net
Thu Dec 15 15:55:03 EST 2005


On 14 Dec 2005 14:30:34 -0800, "Greg Copeland" <gtcopeland at gmail.com> wrote:

>I am running python on VxWorks.  In the course of operation, a vxworks
>tasks writes to a reserved area of memory.  I need access to this chunk
>of memory from within python.  Initially I thought I could simply
>access it as a string but a string would reallocate and copy this chunk
>of memory; which is not something I can have as it would waste a huge
>amount of memory.  We're talking about something like 40MB on a device
>with limited RAM.  I have been looking at array.  It looks promising.
>What's the best route to go here?  Ideally, I would like to simply pass
>in the address of the reserved block and a length, and have the memory
>accessible.
>
>Is there some existing python object/facility I can use or will I need
>to create a custom module?  Any tips, hints, or pointers would
>certainly be appreciated!

What have you gathered from people who have gone before? googling python vxworks
gives about 50k hits ;-)

Your post does not have enough info about your environment, but for
the sake of eliciting same, suppose you had a custom extension module
written in C that would give you the access to the "reserved area of memory"
that you want. So e.g. from the point of view of your python program, it looks
like a module you can import, e.g.,

    import vxreservedmem

Ok, how does the module know where the "reserved area" is? Would you link
the C to some vx library interface to establish location and size? Or?
Is there already a python interface to provide some access?
Can there be more than one instance, so the module should be able to
give you multiple objects that you can use to access different areas?

Once you have an access-providing object, what kind of access do you require?
What is represented within the "memory area" besides an array of bytes? Do the
bytes represent C structs and primitive types? Are there access locks that
determine when it's safe to touch the bytes? A single lock for the whole area,
or individual locks for structs/subregions within the whole? Do you just need
read access or do you want to store info? How would you like to select
chunks of info? Just slices of byte arrays, or are there meaningful arrays
of numbers -- integer, floats, etc. or bit fields etc?

You could define a pure python vxresrvedmem module that just simulates the real
thing, to test ideas -- and to communicate more clearly to us what the problem is.

What modules/libraries do you have to give you access now from python to the vxworks
environment? A file system? /dev/magic_stuff? or /proc/magic_stuff or ?


Regards,
Bengt Richter



More information about the Python-list mailing list