An idea of remove MUTEX_WAKE_ALL
prime
guomingyan at gmail.com
Sat Dec 31 23:21:51 PST 2005
Hi hackers,
I have an idea about remove the kernel option MUTEX_WAKE_ALL.
When we unlock the mutex(in _mtx_unlock_sleep),we can directly
give the lock to the first thread waiting on the turnstile.And a
thread gets the mutex after he returned from turnstile_wait so he
can simply jump out the _obtain_lock loop in _mtx_lock_sleep.
This makes a mutex always be owned by a thread when there are threads
waiting on the turnstile,so priority inheritance can work now.
This idea need only a few changes in kern/kern_mutex.c .But when
NO_ADAPTIVE_MUTEXS not set,it makes threads that spinning on other CPU
to get the mutex have to spin for a long time,and this makes the short
term mutex more expensive(maybe should use spin mutex instead).
What do think about the idea? Thanks.
--
Three passions, simple but overwhelmingly strong, have governed my life:
the longing for love, the search for knowledge, and unbearable pity for
the suffering of mankind.
---------Bertrand Russell
More information about the freebsd-hackers
mailing list