All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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.