Messages in this thread | | | Date | Tue, 29 Apr 2008 14:43:12 +0200 (CEST) | From | Jiri Kosina <> | Subject | Re: futex code and barriers |
| |
On Tue, 29 Apr 2008, Peter Zijlstra wrote:
> While looking through the futex code I stumbled upon the following bit: > kernel/futex.c: > /* add_wait_queue is the barrier after __set_current_state. */ > __set_current_state(TASK_INTERRUPTIBLE); > add_wait_queue(&q.waiters, &wait); > However, > void add_wait_queue(wait_queue_head_t *q, wait_queue_t *wait) > { > unsigned long flags; > > wait->flags &= ~WQ_FLAG_EXCLUSIVE; > spin_lock_irqsave(&q->lock, flags); > __add_wait_queue(q, wait); > spin_unlock_irqrestore(&q->lock, flags); > } [ ... ] > Non of which implies a full barrier.
Well I am probably missing the point, but what about the lock and unlock of the spinlock?
-- Jiri Kosina SUSE Labs
| |