locking in a device driver
M. Warner Losh
imp at bsdimp.com
Tue Nov 1 08:05:41 PST 2005
In message: <43676121.4030801 at alphaque.com>
Dinesh Nair <dinesh at alphaque.com> writes:
: On 10/28/05 16:40 Dinesh Nair said the following:
: > 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
: > which is a Good Thing(tm) indeed for me on 4.x.
: which may not be a Good Thing(tm) after all. this could be causing the
: problem i'm seeing with the driver on 4.x. any methods to get around this,
: short of not using threads ?
Use non-blocking I/O + read/write channels + select/poll instead of
ioctl for things you want to block. Your thread can then read/write
to that channel, and since the treading package does the select behind
the scenes, it will be good for you.
More information about the freebsd-hackers