locking in a device driver

Julian Elischer julian at elischer.org
Wed Nov 2 11:16:30 PST 2005


Dinesh Nair wrote:

>
>
> On 10/28/05 10:52 M. Warner Losh said the following:
>
>> libc_r will block all other threads in the application while an ioctl
>> executes.  libpthread and libthr won't.  I've had several bugs at work
>
>
> so if the userland thread does an ioctl, and the the driver goes to 
> tsleep() when the ioctl is received, all other threads are also 
> blocked from executing, i.e wont be context switched to run ?

in 4.x and earlier. a tsleep saves your spl level but re-enables the 
interrupts (from memory)
when you re-awaken you are given your spl level again..  All other 
threads are allowed to run.

lower level code (the interupt executed part is not allowed to ever sleep)

>
> is this behaviour only 4.x specific or is it also there in 5.x ?




More information about the freebsd-hackers mailing list