[Numpy-discussion] memmap from fd?

Neal Becker ndbecker2@gmail....
Fri Jan 9 08:08:48 CST 2009


Robert Kern wrote:

> On Fri, Jan 9, 2009 at 06:05, Neal Becker <ndbecker2@gmail.com> wrote:
>> I'm working on interfacing to a custom FPGA board.  The kernel driver
>> exposes the FPGA memory via mmap.
>>
>> It might be nice to use numpy memmap to read/write data.  One issue is
>> that I think I will need to create the memmap array from a fd, not a file
>> name.  The reason is I wrote the driver to only allow 1 exclusive open,
>> and I already have it open for other reasons.  Any chance to create a
>> memmap array from a fd?
> 
> Use os.fdopen(fd) to create a file object which can be passed to the
> memmap constructor.
> 

Looks like this is not going to work without some change to memmap.  The problem is, I need read/write access.  The only choice in memmap is 'w+'.

But this does:
        if (mode == 'w+') and shape is None:
            raise ValueError, "shape must be given"

        fid.seek(0,2)
 
My device has hijacked 'read' to mean something entirely different than you might expect.  The seek call invokes 'read'.

It looks like the purpose of this code is to find the size of the mappable area.  The best solution I think is just throw it away.  Consistent with mmap semantics, attempting access outside the mappable area should cause and error - but I don't think there is any reliable way to know the length of the mappable area apriori.

Any thoughts?



More information about the Numpy-discussion mailing list