On 14 Dec 2005 14:30:34 -0800, "Greg Copeland" <[EMAIL PROTECTED]> 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 -- http://mail.python.org/mailman/listinfo/python-list