Hi!
I have came upon an interesting situation where I am not sure about mutex
semantics. What I want to do is something like this:
mutex_lock(&global_lock);
mutex_lock(small_lock);
do_something_small_which_requires_both_locks();
do_something_big_which_requires_only_small_lock();
mutex_unlock(small_lock);
mutex_unlock(&global_lock);
I want to avoid holding the global lock while doing something_big. Can I do
something like this:
mutex_lock(&global_lock);
mutex_lock(small_lock);
do_something_small_which_requires_both_locks();
mutex_unlock(&global_lock);
do_something_big_which_requires_only_small_lock();
mutex_unlock(small_lock);
The mutex_lock order cannot be changed due to deadlocks. Releasing small_lock
and then reaquiring might be possible, but looks pretty fragile.
-Michi
--
programing a layer 3+4 network protocol for mesh networks
see http://michaelblizek.twilightparadox.com
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [email protected]
Please read the FAQ at http://kernelnewbies.org/FAQ