Date: Mon, 13 Oct 2003 16:17:19 -0700 (PDT) From: John Polstra <jdp@polstra.com> To: John-Mark Gurney <gurney_j@efn.org> Cc: freebsd-bugs@freebsd.org Subject: Re: kern/45291: kevent(2) ignores timeout if nevents == 0 Message-ID: <XFMail.20031013161719.jdp@polstra.com> In-Reply-To: <20031013194716.GP533@funkthat.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 13-Oct-2003 John-Mark Gurney wrote: > John Polstra wrote this message on Mon, Oct 13, 2003 at 09:37 -0700: >> >> I disagree. The current behavior is not correct. It is inconsistent >> with the longstanding behavior of both poll() and select(). Also, >> from a practical standpoint, returning immediately instead of >> waiting for the timeout to expire makes writing a typical event loop >> more awkward. It requires the addition of a special case in the >> application code to deal with the situation where no events are being >> awaited. That's not necessary when using poll() or select(). > > Simple fix, you wait for a single event, adding a struct kevent such as: > struct kevent ke; > ret = kevent(qfd, NULL, 0, &ke, 1, &ts); > > makes it wait the full 10 seconds. so, are you suggesting that we change > the behavior to wait for the timeout to expire before we return ANY > events? (because that is what your suggesting). That's not what really what I was suggesting, but after thinking it over some more I think I agree that it's OK as it stands. Because you can use kevent() to register events, or wait for events, or both, I guess it makes sense to ignore the timeout entirely when no events could possibly be returned. Sorry for the noise. John
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.20031013161719.jdp>