[comp.unix.questions] uses of mmap

freedman@mips2.cr.bull.com (Jerome Freedman) (09/04/90)

  I have been looking at mmap (for work I did last year it
would have been GREAT - i think). I am not sure I understand
how it is used - I am looking at the man page (MIPS RiscOs).

"mmap maps pages of memory from the memory device associated
with file fd into the address space of the calling process.."

 Now , If I want to mmap a file it looks as though I have to
open the device on which the file resides to get the fd 
mentioned in the man pages and somehow get the offset of
the file I want to map - is this a correct interpretation
it all seems murky. Can some one post me an example of code
using mmap?


                              Jerry Freedman,Jr

guy@auspex.auspex.com (Guy Harris) (09/06/90)

 >  I have been looking at mmap (for work I did last year it
 >would have been GREAT - i think). I am not sure I understand
 >how it is used - I am looking at the man page (MIPS RiscOs).
 >
 >"mmap maps pages of memory from the memory device associated
 >with file fd into the address space of the calling process.."
 >
 > Now , If I want to mmap a file it looks as though I have to
 >open the device on which the file resides to get the fd 
 >mentioned in the man pages and somehow get the offset of
 >the file I want to map - is this a correct interpretation
 >it all seems murky.

Hmm.

Different systems implement "mmap()" to different degrees.

Some systems (e.g., SunOS prior to 4.0) only let you "mmap()" some
special files; they did *not* allow you to map an ordinary file into
memory.

Other systems (e.g., SunOS 4.0 and later, System V Release 4, and, I
think, Convex's OS and Dynix, at least in some releases - possibly
others) let you "mmap()" ordinary files into memory.

The fact that the man page says "memory device" makes it sound as if
RISC/OS falls into the first category, and only lets you map memory
devices into memory, not regular files.  If so, you can't "mmap()" a
file, period.

If it's one of the systems that *does* let you "mmap()" a file, you open
the file and use the file descriptor you get from the open to map the
file; you don't have to open the device on which the file resides.  (You
can't find "the offset of the file" in any case, because there is no
such thing in general, unless you consider the block number of the first
block of the file to be its "offset").

dcm@moria.UUCP (David C. Miller) (09/07/90)

In Jerome Freedman writes:
:  I have been looking at mmap [...]
: Now , If I want to mmap a file it looks as though I have to
: open the device on which the file resides to get the fd 
: mentioned in the man pages and somehow get the offset of
: the file I want to map - is this a correct interpretation

It's real close.  But you open the *file* you want to map, not
the device it resides on.

David