Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 01 Nov 2005 09:02:12 -0700 (MST)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        dinesh@alphaque.com
Cc:        freebsd-hackers@freebsd.org, scottl@samsco.org
Subject:   Re: locking in a device driver
Message-ID:  <20051101.090212.05878607.imp@bsdimp.com>
In-Reply-To: <43676121.4030801@alphaque.com>
References:  <20051027.205250.55834228.imp@bsdimp.com> <4361E3E0.4090409@alphaque.com> <43676121.4030801@alphaque.com>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <43676121.4030801@alphaque.com>
            Dinesh Nair <dinesh@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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20051101.090212.05878607.imp>