linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Michael Kerrisk (man-pages)" <mtk.manpages@gmail.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: mtk.manpages@gmail.com, Thomas Gleixner <tglx@linutronix.de>,
	Darren Hart <dvhart@linux.intel.com>,
	"Carlos O'Donell" <carlos@redhat.com>,
	Ingo Molnar <mingo@elte.hu>, Jakub Jelinek <jakub@redhat.com>,
	"linux-man@vger.kernel.org" <linux-man@vger.kernel.org>,
	lkml <linux-kernel@vger.kernel.org>,
	Davidlohr Bueso <dave@stgolabs.net>,
	Arnd Bergmann <arnd@arndb.de>,
	Steven Rostedt <rostedt@goodmis.org>,
	Linux API <linux-api@vger.kernel.org>,
	Torvald Riegel <triegel@redhat.com>,
	Roland McGrath <roland@hack.frob.com>,
	Darren Hart <dvhart@infradead.org>,
	Anton Blanchard <anton@samba.org>,
	Eric Dumazet <edumazet@google.com>,
	bill o gallmeister <bgallmeister@gmail.com>,
	Jan Kiszka <jan.kiszka@siemens.com>,
	Daniel Wagner <wagi@monom.org>, Rich Felker <dalias@libc.org>,
	Andy Lutomirski <luto@amacapital.net>,
	bert hubert <bert.hubert@netherlabs.nl>,
	Rusty Russell <rusty@rustcorp.com.au>,
	Heinrich Schuchardt <xypron.glpk@gmx.de>
Subject: Re: Revised futex(2) man page for review
Date: Mon, 27 Jul 2015 13:10:55 +0200	[thread overview]
Message-ID: <55B611BF.8040908@gmail.com> (raw)
In-Reply-To: <20150328120337.GB32047@worktop.ger.corp.intel.com>

Hi Peter,

On 03/28/2015 01:03 PM, Peter Zijlstra wrote:
> On Sat, Mar 28, 2015 at 12:47:25PM +0100, Peter Zijlstra wrote:
>>        FUTEX_WAIT (since Linux 2.6.0)
>>               This operation tests that the value at the futex word pointed to
>>               by the address uaddr still contains the expected value val,  and
>>               if  so,  then sleeps awaiting FUTEX_WAKE on the futex word.  The
>>               load of the value of the futex word is an atomic  memory  access
>>               (i.e.,  using  atomic  machine  instructions  of  the respective
>>               architecture).  This load,  the  comparison  with  the  expected
>>               value,  and  starting  to  sleep  are  performed  atomically and
>>               totally ordered with respect to other futex  operations  on  the
>>               same  futex  word.  If the thread starts to sleep, it is consid‐
>>               ered a waiter on this futex word.  If the futex value  does  not
>>               match  val,  then  the  call  fails  immediately  with the error
>>               EAGAIN.
>>
>>               The purpose of the comparison with the expected value is to pre‐
>>               vent  lost  wake-ups: If another thread changed the value of the
>>               futex word after the calling thread decided to  block  based  on
>>               the  prior  value, and if the other thread executed a FUTEX_WAKE
>>               operation (or similar wake-up) after the value change and before
>>               this  FUTEX_WAIT  operation,  then  the  latter will observe the
>>               value change and will not start to sleep.
>>
>>               If the timeout argument is non-NULL, its contents specify a rel‐
>>               ative   timeout   for   the  wait,  measured  according  to  the
>>               CLOCK_MONOTONIC clock.  (This interval will be rounded up to the
>>               system clock granularity, and kernel scheduling delays mean that
>>               the blocking interval may overrun by a small amount.)  If  time‐
>>               out is NULL, the call blocks indefinitely.
> 
> Would it not be better to only state that the wait will not return
> before the timeout -- unless woken -- and not bother with clock
> granularity and scheduling delays?

Many of the pages that talk about system calls that have timeouts
carry similar language, since people often have confusions about what time
timeout (e.g., that it's an upper limit, not a minimum; or that it's precise
to some very small granularity). Why do you think the language here is a
problem?

Cheers,

Michael



-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/

  parent reply	other threads:[~2015-07-27 11:11 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-28  8:53 Revised futex(2) man page for review Michael Kerrisk (man-pages)
2015-03-28  8:56 ` Michael Kerrisk (man-pages)
2015-03-28 11:47 ` Peter Zijlstra
2015-03-28 12:03   ` Peter Zijlstra
2015-03-31 20:36     ` Davidlohr Bueso
2015-07-27 11:00       ` Michael Kerrisk (man-pages)
2015-07-27 11:10     ` Michael Kerrisk (man-pages) [this message]
2015-03-31 14:45   ` Davidlohr Bueso
2015-07-27 11:10     ` Michael Kerrisk (man-pages)
2015-07-28  3:16       ` Davidlohr Bueso
2015-07-28  7:44         ` Michael Kerrisk (man-pages)
2015-07-28 17:52           ` Davidlohr Bueso
2015-07-28 18:09             ` Michael Kerrisk (man-pages)
2015-04-14 21:40   ` Thomas Gleixner
2015-04-15 10:28     ` Torvald Riegel
2015-07-27 11:10       ` Michael Kerrisk (man-pages)
2015-04-27 20:37   ` Pavel Machek
2015-07-27 11:10     ` Michael Kerrisk (man-pages)
2015-07-28  2:52   ` Davidlohr Bueso
2015-07-28  6:39     ` Michael Kerrisk (man-pages)
2015-03-31  1:48 ` Rusty Russell
2015-07-27 11:03   ` Michael Kerrisk (man-pages)

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=55B611BF.8040908@gmail.com \
    --to=mtk.manpages@gmail.com \
    --cc=anton@samba.org \
    --cc=arnd@arndb.de \
    --cc=bert.hubert@netherlabs.nl \
    --cc=bgallmeister@gmail.com \
    --cc=carlos@redhat.com \
    --cc=dalias@libc.org \
    --cc=dave@stgolabs.net \
    --cc=dvhart@infradead.org \
    --cc=dvhart@linux.intel.com \
    --cc=edumazet@google.com \
    --cc=jakub@redhat.com \
    --cc=jan.kiszka@siemens.com \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-man@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=mingo@elte.hu \
    --cc=peterz@infradead.org \
    --cc=roland@hack.frob.com \
    --cc=rostedt@goodmis.org \
    --cc=rusty@rustcorp.com.au \
    --cc=tglx@linutronix.de \
    --cc=triegel@redhat.com \
    --cc=wagi@monom.org \
    --cc=xypron.glpk@gmx.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).