|| ||Ingo Molnar <firstname.lastname@example.org>|
|| ||Linus Torvalds <email@example.com>|
|| ||[patch 0/8] mutex subsystem, ANNOUNCE|
|| ||Wed, 21 Dec 2005 16:54:11 +0100|
|| ||lkml <firstname.lastname@example.org>, Andrew Morton <email@example.com>,
Arjan van de Ven <firstname.lastname@example.org>,
Jes Sorensen <email@example.com>,
Zwane Mwaikambo <firstname.lastname@example.org>,
Oleg Nesterov <email@example.com>,
David Howells <firstname.lastname@example.org>,
Alan Cox <email@example.com>,
Benjamin LaHaise <firstname.lastname@example.org>,
Steven Rostedt <email@example.com>,
Christoph Hellwig <firstname.lastname@example.org>, Andi Kleen <email@example.com>,
Russell King <firstname.lastname@example.org>,
Nicolas Pitre <email@example.com>|
this is the latest version of the mutex subsystem patch-queue. It
consists of the following patches:
the patches are against Linus' latest tree, and were tested on i386,
x86_64 and ia64. [the tests were also done in DEBUG_MUTEX_FULL mode, to
make sure the code works fine. MUTEX_FULL support is not included in
The patches can also be downloaded from:
Changes since the previous version:
- dropped the semaphore-renaming and migration-helper patches. The
patches now contain only the pure mutex subsystem, nothing more.
- removed the fastpath dependency on __HAVE_ARCH_CMPXCHG: now every
architecture is able to use the generic mutex_lock/mutex_unlock
lockless fastpath. The quality of the fastpath is still as good as in
the previous version.
- added ARCH_IMPLEMENTS_MUTEX_FASTPATH for architectures that want to
hand-code their own fastpath. The mutex_lock_slowpath,
mutex_unlock_slowpath and mutex_lock_interruptible_slowpath global
functions can be used by such architectures in this case, and they
should implement the mutex_lock(), mutex_unlock() and
mutex_lock_interruptible() functions themselves. I have tested this
mechanism on x86. (but x86 wants to use the generic functions
otherwise, so those changes are not included in this patchqueue.)
- fixed the x86_64 register-clobber bug noticed by Zwane Mwaikambo
- XFS namespace collision fixes from Jes Sorensen
- lots of cleanups to "hide" the debugging code, it should now be much
less intrusive visually - kernel/mutex.c is now both smaller and
easier to read. There's no reduction in debugging functionality.
- cleaned up the debugging code
- unified all the externally visible debugging functions around the
- added the proper atomic ops to every architecture - so in theory
mutexes should now work on every architectures. i386, x86_64 and ia64
- created mutex-debug.h to hide some of the debugging details. Moved the
mm.h and sched.h debug-function declarations into this file.
- documentation updates
- eliminated the ->file, ->line debugging variant - __FUNCTION__ is good
enough and resulted in nicer code.
- properly check for held locks in kfree() too, if DEBUG.
- check for held-lock reinitialization via mutex_init(), if DEBUG.
- more micro-optimizations: eliminated an extra spinlock drop/reacquire
in the slowpath.
- dropped waiter->woken, profiles showed that it triggered very rarely.
- dropped the timeout/timer bits - nothing is using them right now, we
can add them back later.
- new mutex_trylock() optimization on architectures that support cmpxchg.
- marked ->name as const
- fixed typo: CONFIG_DEBUG_MUTEXESS -> CONFIG_DEBUG_MUTEXES
- mb() -> smp_mb() in mutex_is_locked()
- mutex_trylock doesnt need __sched
comments, fixes, bugreports are welcome,