Current-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: select/poll bug?
On Sat, 2008-08-02 at 11:23 +0200, Alan Barrett wrote:
> On Sat, 02 Aug 2008, Roy Marples wrote:
> > no man page for select(2) or poll(2) indicate that it *may* return
> > a timeout even when there's a very small amount of time left to
> > wait. This amount of time is normally around 500 usecs or less
>
> Are you saying that NetBSD's select(2) and poll(2) do not actually do
> what they are expected to do? Please could you explain in more detail,
> and is there a PR for this?
OK, this is what happens on Linux - I didn't actually test on NetBSD or
FreeBSD for this specific issue. I will test later today, but am pretty
sure it exists as Joerg did report a similar issue once but could not
reproduce it. But, roughly, the issue is like this
struct timeval expire, now, wait;
get_monotonic(&now);
timersub(&expire, &now, &wait);
if (select(...., &wait) == 0) {
get_monotonic(&now);
if (timercmp(&expire, &now, >))
printf("error!\n");
}
get_monotonic is a clock_gettime call that converts the resultant
timespec into a timeval.
I did find a discussion on the Linux kernel mailing list about this very
issue and the end result was don't use select/poll for high resolution
dependant timers. I'll see if I can dig the link up.
Thanks
Roy
Home |
Main Index |
Thread Index |
Old Index