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.

Warner


More information about the freebsd-hackers mailing list