2 * (C) Copyright 2007-2011 Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
4 * This file is released under the GPLv2. See the COPYING file for more
10 /* slow-path mutex locking */
11 void __mutex_lock_slow(mutex_t
*lock
)
13 spin_lock(&lock
->queue_lock
);
15 if (unlikely(atomic_add_unless(&lock
->state
, -1, 0))) {
16 spin_unlock(&lock
->queue_lock
);
17 return; /* aha! someone released it & it's ours now! */
20 list_add_tail(¤t
->blocked_list
, &lock
->queue
);
22 spin_unlock(&lock
->queue_lock
);