Subject: Re: [boost] [interprocess] Platform-specific flags for mapped_region
From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2013-02-12 04:05:54
On Tue, Feb 12, 2013 at 12:52 PM, Ion Gaztañaga <igaztanaga_at_[hidden]> wrote:
> El 12/02/2013 8:52, Andrey Semashev escribió:
>> I wanted to try using Linux huge pages in my application, which uses
>> Boost.Interprocess currently for interprocess communication. However
>> there seems to be no way to pass MAP_HUGETLB flag to mmap in the
>> interface of mapped_region.
>> I understand that this is a platform-specific option, so probably it
>> would be best to just add an opaque unsigned int flags parameter to
>> the mapped_region constructor with the default value of 0. Or is there
>> a better way of doing this?
> That's a good start. I guess we could define a platform-defined map_flags_t
> type in Interprocess. For unix systems a "int", for windows systems
> "unsigned long" (DWORD). That parameter could be passed as the new last
> default parameter initialized to zero, say "extra_map_flags". That flag will
> be OR-ed with internally produced flag before calling mmap or
> MapViewOfFileEx. Would this be good enough?
Yes, that would be enough for my needs. Although from the
implementation perspective, I would probably make it MAP_NOSYNC by
default on *nix systems to remove the hardcoded OR in the constructor
body (POSIX version).
>> I'll create a ticket for this feature, but I wanted to know if the
>> general idea of this extension is welcome.
> Yes, please. Propagating this support to higher level abstractions, like
> managed_shared_memory, is a bit more complicated, but let's not add it if
> still there is no demand for that.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk