[lkml]   [2003]   [Jan]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: {sys_,/dev/}epoll waiting timeout
Davide Libenzi wrote:
> >From a mathematical point of view this is a ceil(v)+1, so this is wrong.
> It should be :
> t = (t * HZ + 999) / 1000;
> The +999 already gives you the round up. Different is if we want to be
> sure to sleep at least that amount of jiffies ( the rounded up ), in that
> case since the timer tick might arrive immediately after we go to sleep by
> making us to lose immediately a jiffie, we need another +1. Anyway I'll do
> the round up. Same for the overflow check.

I wonder if it's appropriate to copy sys_poll(), which has the +1, or
sys_select(), which doesn't!

> > And that the prototypes for ep_poll() and sys_epoll_wait() be changed
> > to take a "long timeout" instead of an "int", just like sys_poll().
> I don't see why. The poll(2) timeout is an int.

poll(2) takes an int, but sys_poll() takes a long.
I think everyone is confused :)

The reason I suggested "long timeout" for ep_poll is because the
multiply in the expression:

jtimeout = (unsigned long)(timeout*HZ+999)/1000;

can overflow if you don't. If you stick with the int, you'll need to

jtimeout = (((unsigned long)timeout)*HZ+999)/1000;

-- Jamie
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-03-22 13:32    [W:0.095 / U:0.324 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site