From: "Michael Kerrisk (man-pages)" <mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: "Jörn Engel" <joern-BHEL68pLQRGGvPXPguhicg@public.gmane.org>
Cc: mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: mlockall(MCL_FUTURE) implies MAP_POPULATE
Date: Thu, 17 Dec 2015 08:06:21 +0100 [thread overview]
Message-ID: <56725EED.80502@gmail.com> (raw)
In-Reply-To: <20151216185006.GA31243-cauy6bAtduhuHSXMRYw1Og@public.gmane.org>
On 12/16/2015 07:50 PM, Jörn Engel wrote:
> On Wed, Dec 16, 2015 at 07:44:16PM +0100, Michael Kerrisk (man7.org) wrote:
>> On 28 October 2015 at 02:05, Jörn Engel <joern-BHEL68pLQRGGvPXPguhicg@public.gmane.org> wrote:
>>> Hello Michael!
>>>
>>> Just came across this. When reading the manpage MLOCK(2), I assume that
>>> mlockall(MCL_FUTURE) does _not_ imply MAP_POPULATE. But when reading
>>> the code, I see that it does.
>>>
>>> This little detail can be rather crucial for RT-people, so it might be
>>> worth spelling it out explicitly in the manpage.
>>
>> But, this detail doesn't seem so surprising to me. MCL_FUTURE == new
>> pages that are mapped will be locked. Of course they must be populated
>> into memory when the mapping is created. Or: to put it another way,
>> maybe it would help if you explain why you find the behavior
>> surprising. That might give me a clue about what should be fixed in
>> the man page.
>>
>> But, please take this thread to mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, and cc
>> linux-man-u79uwXL29TaiAVqoAR/hOA@public.gmane.org
>
> Done. :)
>
> I guess it is a judgement call now. One fool (me) made the wrong
> assumption and had to a) get into an argument with a coworker and b)
> check the code to realize the mistake. If fools like me are common, it
> might be worth making this point explicit. If I am the oddball, it
> would be wasting file size and reading time for everyone else.
So, I just realized that a recent change to the API, plus its
associated documentation in the mlock(2) pages actually probably
lessens the chance of this mistake. The next release of man-pages
will include documentation of MCL_ONFAULT:
MCL_CURRENT Lock all pages which are currently mapped into the
address space of the process.
MCL_FUTURE Lock all pages which will become mapped into the
address space of the process in the future. These
could be, for instance, new pages required by a
growing heap and stack as well as new memory-mapped
files or shared memory regions.
MCL_ONFAULT (since Linux 4.4)
Used together with MCL_CURRENT, MCL_FUTURE, or
both. Mark all current (with MCL_CURRENT) or
future (with MCL_FUTURE) mappings to lock pages
when they are faulted in. When used with MCL_CUR‐
RENT, all present pages are locked, but mlockall()
will not fault in non-present pages. When used
with MCL_FUTURE, all future mappings will be marked
to lock pages when they are faulted in, but they
will not be populated by the lock when the mapping
is created. MCL_ONFAULT must be used with either
MCL_CURRENT or MCL_FUTURE or both.
Do you think that text helps?
Cheers,
Michael
--
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2015-12-17 7:06 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20151028010510.GF21688@Sligo.logfs.org>
[not found] ` <CAFs=pgb+LatY8WKV+sZsvgUGMtzVsSxwX0FTKx3u5Nuj1AiOYg@mail.gmail.com>
[not found] ` <CAFs=pgb+LatY8WKV+sZsvgUGMtzVsSxwX0FTKx3u5Nuj1AiOYg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-12-16 18:50 ` mlockall(MCL_FUTURE) implies MAP_POPULATE Jörn Engel
[not found] ` <20151216185006.GA31243-cauy6bAtduhuHSXMRYw1Og@public.gmane.org>
2015-12-17 7:06 ` Michael Kerrisk (man-pages) [this message]
[not found] ` <56725EED.80502-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-12-17 17:54 ` Jörn Engel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56725EED.80502@gmail.com \
--to=mtk.manpages-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=joern-BHEL68pLQRGGvPXPguhicg@public.gmane.org \
--cc=linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.