Skip to contentSkip to conversation

mutex subsystem, ANNOUNCE

PATCH In review Ingo Molnar 1 participant 1 message Dec 21, 2005

lore
Share & tools
lore
#0 lore raw

cover mutex subsystem, ANNOUNCE

this is the latest version of the mutex subsystem patch-queue. It consists of the following patches:

xfs-mutex-namespace-collision-fix.patch
add-atomic-xchg.patch
add-atomic-call-func-i386.patch
add-atomic-call-func-x86_64.patch
add-atomic-call-wrappers-rest.patch
mutex-core.patch
mutex-debug.patch
mutex-debug-more.patch

the patches are against Linus' latest tree.

Changes since the previous version:

- fixed the %eax clobber bug noticed by Linus. Also fixed a similar bug in the x86_64 assembly routine. Ended up solving this by marking the register clobbered - the function-always-returns change resulted in worse code. (usually the slowpath functions dont have the atomic-lock parameter ready at the end of the function, so they have to do extra work to return it.)

- implemented Oleg's suggestion of doing the xchg() before adding the waiter to the queue.

- optimization: in the xchg() case we can avoid hitting the slowpath when releasing the lock later on, by setting the count to 0 if the wait-list is otherwise empty. This is the common-case for wakeups.

- bugfix: forgot to take a spinlock in the signal-return path.

- added a couple of likely/unlikely modifiers, based on profile output.

- inline the trylock fastpath into the mutex_trylock() function.

- move the waiter->lock field into the debug path - nothing in the non-debug case was using it. This is also a small optimization for the slowpath.

- optimization: do a cheaper list_del in the non-debug case. This also enabled the removal of debug_remove_waiter().

- fix for the debugging branch: initialize the wait->list to empty.

Ingo