# A question about in lock usage in FreeBSD



## Jia-Ju Bai (Jun 14, 2017)

Hi, 

I am a freshman in developing FreeBSD drivers, and I have a question in lock usage in FreeBSD. 

The kernel provides some kinds of locks in developing drivers, such as "mutex lock", "mutex spin lock", "rw lock" and "sx lock". I want to know which locks should be held when the thread can sleep. 
From my knowledge of FreeBSD document, I make the following points: 
(1) "rw lock" and "sx lock" can be used in this situation; 
(2) "mutex lock" and "mutex spin lock" are forbidden in this situation. 

If my points are right, I will make another point: 
mutex_lock will let the thread sleep when the lock is requested, so the mutex_lock can not be called in nested style (namely it is unsafe that mutex_lock is called again when a "mutex lock" is held). 

Are my points are right? 
I am looking forward to useful opinions and answers 

Thanks in advance 
Jia-Ju Bai


----------



## phoenix (Jun 14, 2017)

There's a good discussion on this topic (started by the OP) on the -hackers mailing list.  Anyone looking for replies/answers, see the thread here.


----------

