Messages in this thread | | | Date | Thu, 20 Oct 2005 15:15:29 -0700 (PDT) | From | Linus Torvalds <> | Subject | Re: [PATCH] i386 spinlocks should use the full 32 bits, not only 8 bits |
| |
On Fri, 21 Oct 2005, Ingo Molnar wrote: > > the unlock is simple even in the preemption case
No it's not. It needs to decrement the preemption counter and test it.
See kernel/spinlock.c:
void __lockfunc _spin_unlock(spinlock_t *lock) { _raw_spin_unlock(lock); preempt_enable(); } EXPORT_SYMBOL(_spin_unlock);
and look at what "preempt_enable()" does.
In other words, with CONFIG_PREEMPT, your patch is WRONG. You made "spin_unlock()" just skip the preempt_enable.
In fact, with preemption, the _locking_ is the simpler part. Unlock is the complex one.
Linus - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |