Messages in this thread | | | Date | Tue, 15 Apr 2014 15:49:49 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH 3/8] sched/wait: Use __add_wait_queue{_tail}_exclusive() as possible. |
| |
On Tue, Apr 15, 2014 at 09:32:52PM +0900, Dongsheng Yang wrote: > From: Dongsheng <yangds.fnst@cn.fujitsu.com> > > There is already a function in include/linux/wait.h to cover the > 'exclusive' usage. So we can use it in sched/wait.c to replace > the opened implementation of it. > > Signed-off-by: Dongsheng <yangds.fnst@cn.fujitsu.com> > --- > kernel/sched/wait.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/kernel/sched/wait.c b/kernel/sched/wait.c > index 283750e..b04827e 100644 > --- a/kernel/sched/wait.c > +++ b/kernel/sched/wait.c > @@ -38,9 +38,8 @@ void add_wait_queue_exclusive(wait_queue_head_t *q, wait_queue_t *wait) > unsigned long flags; > > trace_sched_wait(current); > - wait->flags |= WQ_FLAG_EXCLUSIVE; > spin_lock_irqsave(&q->lock, flags); > - __add_wait_queue_tail(q, wait); > + __add_wait_queue_tail_exclusive(q, wait); > spin_unlock_irqrestore(&q->lock, flags); > } > EXPORT_SYMBOL(add_wait_queue_exclusive); > @@ -192,10 +191,9 @@ prepare_to_wait_exclusive(wait_queue_head_t *q, wait_queue_t *wait, int state) > unsigned long flags; > > trace_sched_wait(current); > - wait->flags |= WQ_FLAG_EXCLUSIVE; > spin_lock_irqsave(&q->lock, flags); > if (list_empty(&wait->task_list)) > - __add_wait_queue_tail(q, wait); > + __add_wait_queue_tail_exclusive(q, wait); > set_current_state(state); > spin_unlock_irqrestore(&q->lock, flags);
That is not a no-op, if !list_empty() we loose the WQ_flag
| |