lkml.org 
[lkml]   [2011]   [Dec]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 05/10] wait: Provide __wake_up_all_locked
    From: Thomas Gleixner <tglx@linutronix.de>

    For code which protects the waitqueue itself with another lock it
    makes no sense to acquire the waitqueue lock for wakeup all. Provide
    __wake_up_all_locked.

    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable-rt@vger.kernel.org
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    ---
    include/linux/wait.h | 5 +++--
    kernel/sched.c | 4 ++--
    2 files changed, 5 insertions(+), 4 deletions(-)

    diff --git a/include/linux/wait.h b/include/linux/wait.h
    index 3efc9f3..1e904b8 100644
    --- a/include/linux/wait.h
    +++ b/include/linux/wait.h
    @@ -157,7 +157,7 @@ void __wake_up(wait_queue_head_t *q, unsigned int mode, int nr, void *key);
    void __wake_up_locked_key(wait_queue_head_t *q, unsigned int mode, void *key);
    void __wake_up_sync_key(wait_queue_head_t *q, unsigned int mode, int nr,
    void *key);
    -void __wake_up_locked(wait_queue_head_t *q, unsigned int mode);
    +void __wake_up_locked(wait_queue_head_t *q, unsigned int mode, int nr);
    void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr);
    void __wake_up_bit(wait_queue_head_t *, void *, int);
    int __wait_on_bit(wait_queue_head_t *, struct wait_bit_queue *, int (*)(void *), unsigned);
    @@ -170,7 +170,8 @@ wait_queue_head_t *bit_waitqueue(void *, int);
    #define wake_up(x) __wake_up(x, TASK_NORMAL, 1, NULL)
    #define wake_up_nr(x, nr) __wake_up(x, TASK_NORMAL, nr, NULL)
    #define wake_up_all(x) __wake_up(x, TASK_NORMAL, 0, NULL)
    -#define wake_up_locked(x) __wake_up_locked((x), TASK_NORMAL)
    +#define wake_up_locked(x) __wake_up_locked((x), TASK_NORMAL, 1)
    +#define wake_up_all_locked(x) __wake_up_locked((x), TASK_NORMAL, 0)

    #define wake_up_interruptible(x) __wake_up(x, TASK_INTERRUPTIBLE, 1, NULL)
    #define wake_up_interruptible_nr(x, nr) __wake_up(x, TASK_INTERRUPTIBLE, nr, NULL)
    diff --git a/kernel/sched.c b/kernel/sched.c
    index 640f740..63aeba0 100644
    --- a/kernel/sched.c
    +++ b/kernel/sched.c
    @@ -4642,9 +4642,9 @@ EXPORT_SYMBOL(__wake_up);
    /*
    * Same as __wake_up but called with the spinlock in wait_queue_head_t held.
    */
    -void __wake_up_locked(wait_queue_head_t *q, unsigned int mode)
    +void __wake_up_locked(wait_queue_head_t *q, unsigned int mode, int nr)
    {
    - __wake_up_common(q, mode, 1, 0, NULL);
    + __wake_up_common(q, mode, nr, 0, NULL);
    }
    EXPORT_SYMBOL_GPL(__wake_up_locked);

    --
    1.7.7.1

    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2011-12-03 02:51    [W:3.394 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site