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