• Peter Zijlstra (Intel)'s avatar
    wait.[ch]: Introduce the simple waitqueue (swait) implementation · 13b35686
    Peter Zijlstra (Intel) authored
    The existing wait queue support has support for custom wake up call
    backs, wake flags, wake key (passed to call back) and exclusive
    flags that allow wakers to be tagged as exclusive, for limiting
    the number of wakers.
    In a lot of cases, none of these features are used, and hence we
    can benefit from a slimmed down version that lowers memory overhead
    and reduces runtime overhead.
    The concept originated from -rt, where waitqueues are a constant
    source of trouble, as we can't convert the head lock to a raw
    spinlock due to fancy and long lasting callbacks.
    With the removal of custom callbacks, we can use a raw lock for
    queue list manipulations, hence allowing the simple wait support
    to be used in -rt.
    [Patch is from PeterZ which is based on Thomas version. Commit message is
     written by Paul G.
     Daniel:  - Fixed some compile issues
     	  - Added non-lazy implementation of swake_up_locked as suggested
    	     by Boqun Feng.]
    Originally-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarDaniel Wagner <daniel.wagner@bmw-carit.de>
    Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: linux-rt-users@vger.kernel.org
    Cc: Boqun Feng <boqun.feng@gmail.com>
    Cc: Marcelo Tosatti <mtosatti@redhat.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
    Link: http://lkml.kernel.org/r/1455871601-27484-2-git-send-email-wagi@monom.orgSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
swait.c 2.92 KB