Re: Next round: revised futex(2) man page for review

From: Thomas Gleixner
Date: Tue Jul 28 2015 - 17:04:37 EST


On Tue, 28 Jul 2015, Peter Zijlstra wrote:

> On Tue, Jul 28, 2015 at 10:23:51PM +0200, Thomas Gleixner wrote:
>
> > > FUTEX_WAKE (since Linux 2.6.0)
> > > This operation wakes at most val of the waiters that are
> > > waiting (e.g., inside FUTEX_WAIT) on the futex word at the
> > > address uaddr. Most commonly, val is specified as either
> > > 1 (wake up a single waiter) or INT_MAX (wake up all waitâ
> > > ers). No guarantee is provided about which waiters are
> > > awoken (e.g., a waiter with a higher scheduling priority
> > > is not guaranteed to be awoken in preference to a waiter
> > > with a lower priority).
> >
> > That's only correct up to Linux 2.6.21.
> >
> > Since 2.6.22 we have a priority ordered wakeup. For SCHED_OTHER
> > threads this takes the nice level into account. Threads with the same
> > priority are woken in FIFO order.
>
> Maybe don't mention the effects of SCHED_OTHER, order by nice value is
> 'wrong'.

Indeed.

> Also, this code seems to use plist, which means it won't do the right
> thing for SCHED_DEADLINE either.
>
> Do we want to go fix that?

I think so.

Thanks,

tglx