Shared memory and IPC
Luke Kenneth Casson Leighton
lkcl at samba-tng.org
Fri Sep 7 03:28:03 GMT 2001
On Fri, Sep 07, 2001 at 05:17:01AM -0500, Peter Samuelson wrote:
>
> [Wez Furlong]
> > So there is no nice-n-easy syscall then? Even a non-portable call
> > would be better than parsing /proc/self/maps.
>
> Don't look at me, I'm no IPC expert! (So, that out of the way...)
>
> I am not sure what you are wanting beyond mmap(MAP_FIXED). That is
> indeed a nice-n-easy syscall -- it will either succeed or fail. If it
> succeeds in one process but fails in another, just munmap() it again.
>
> The real question is, what *do* you do on failure? One possible
> protocol: the "master" process does mmap() without MAP_FIXED, reports
> the address to the others via some sort of existing IPC, the rest try
> with MAP_FIXED, report back success or failure. If anyone fails, they
> all unmap *except* the master, which repeats the process with another
> mmap() [again without FIXED] ... for a specified number of tries. Upon
> success, or upon giving up, the master munmaps all failed segments, if
> any.
see, this is the bit that i was hoping that noone would suggest
even be attempted, even though it's technically a correct
solution :)
now we have a good reason to justify why MS reserves 2gb of the
physical memory address space in w95...
the only issue with mmap() without MAP_FIXED is that you
won't get a real physical address back, you'll get a
virtual address back.
if this is the case, the algorithm is sound, but the "master"
would still need to use mmap(MAP_FIXED) with ever-increasing
addresses on segment boundaries, and it could also unmap them
on failure.
luke
More information about the samba-technical
mailing list