]> granicus.if.org Git - zfs/commit
Make kmutex_t typesafe in all cases.
authorRicardo M. Correia <ricardo.correia@oracle.com>
Mon, 22 Nov 2010 08:20:58 +0000 (00:20 -0800)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 29 Nov 2010 19:25:32 +0000 (11:25 -0800)
commitc2f997b0b3b9a79b7146c8883aa09326e5def253
tree6dc6bdb814f441bb5d6e567d9b786fe200aed3ad
parent058de03caaefe63086559662f2abaed1edf0e086
Make kmutex_t typesafe in all cases.

When HAVE_MUTEX_OWNER and CONFIG_SMP are defined, kmutex_t is just
a typedef for struct mutex.

This is generally OK but has the downside that it can make mistakes
such as mutex_lock(&kmutex_var) to pass by unnoticed until someone
compiles the code without HAVE_MUTEX_OWNER or CONFIG_SMP (in which
case kmutex_t is a real struct). Note that the correct API to call
should have been mutex_enter() rather than mutex_lock().

We prevent these kind of mistakes by making kmutex_t a real structure
with only one field. This makes kmutex_t typesafe and it shouldn't
have any impact on the generated assembly code.

Signed-off-by: Ricardo M. Correia <ricardo.correia@oracle.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
include/sys/mutex.h