cvs commit: src/sys/dev/io iodev.c

Robert Watson rwatson at FreeBSD.org
Sat Aug 9 10:28:00 UTC 2008


On Sat, 9 Aug 2008, Peter Jeremy wrote:

> On 2008-Aug-08 12:26:31 -0400, John Baldwin <jhb at freebsd.org> wrote:
>> It should be setting D_TRACKCLOSE though so that close() reliably clears 
>> the flag even in single-threaded processes.  You can still get odd behavior 
>> if you explicitly open it twice in an app and then close one of the two 
>> fd's. You will no longer have IO permission even though you still have one 
>> fd open. However, if you do that I think you deserve what you asked for. :)
>
> That behaviour may be legitimate:  Your code links with libraries foo and 
> bar that each independently open /dev/io so they can frob different things 
> in IO space.  libfoo needs ongoing access to device foo and so keeps its 
> descriptor open.  libbar only needs once-off access to device bar and so 
> closes /dev/io once it's finished its initialisation.  Libraries foo and bar 
> are completely independent and shouldn't need to know anything about each 
> other and your app shouldn't need to know that libraries it's using frob 
> around in IO space.

If that's the view, there should probably be a per-process counter, although 
this is all a bit tricky anyway since file descriptors and processes have a 
tenuous relationship.

Robert N M Watson
Computer Laboratory
University of Cambridge


More information about the cvs-all mailing list