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