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

John Baldwin jhb at freebsd.org
Sat Aug 9 21:02:05 UTC 2008


On Friday 08 August 2008 08:12:56 pm 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.

Then it requires a per-thread (really per-process) counter.  However, 
D_TRACKCLOSE is still better than what is there now and will be needed for 
the counter case to have a chance of working.

-- 
John Baldwin


More information about the cvs-src mailing list