Date: Tue, 12 Dec 2006 15:49:48 -0500 (EST) From: Daniel Eischen <deischen@freebsd.org> To: Poul-Henning Kamp <phk@phk.freebsd.dk> Cc: "Arne H. Juul" <arnej@pvv.ntnu.no>, David Xu <davidxu@freebsd.org>, freebsd-arch@freebsd.org, Kostik Belousov <kostikbel@gmail.com>, freebsd-java@freebsd.org Subject: Re: close() of active socket does not work on FreeBSD 6 Message-ID: <Pine.GSO.4.64.0612121543220.8780@sea.ntplx.net> In-Reply-To: <32874.1165905843@critter.freebsd.dk> References: <32874.1165905843@critter.freebsd.dk>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 12 Dec 2006, Poul-Henning Kamp wrote: > In message <20061212160016.W56465@delplex.bde.org>, Bruce Evans writes: >> On Mon, 11 Dec 2006, Daniel Eischen wrote: > >> It's probably a nightmare in the kernel too. close() starts looking >> like revoke(), and revoke() has large problems and bugs in this area. > > There is the distinctive difference that revoke() operates on a name > and close() on a filedescriptor, but otherwise I agree. Well, if threads waiting on IO are interruptable by signals, can't we make a new signal that's only used by the kernel and send it to all threads waiting on IO for that descriptor? When it gets out to actually setup the signal handler, it just resumes like it is returning from an SA_RESTART signal handler (which according to another posting would reissue the IO command and get EBADF). -- Dan
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.64.0612121543220.8780>