On Sun, Dec 15, 2013 at 02:31:10PM +0100, Mark Kettenis wrote: > From: Mark Kettenis <[email protected]> > > On OpenBSD, passing a timeout longer than 100000000 seconds to select(2) will > make it fail with EINVAL. As this is original 4.4BSD behaviour it is not > inconceivable that other systems suffer from the same problem. And Linux, > though not suffering from any 4.4BSD heritage, briefly did something similar: > > <https://lkml.org/lkml/2012/8/31/263> > > So avoid calling AdjustWaitForDelay() instead of setting the timeout to > (effectively) ULONG_MAX milliseconds. > > Signed-off-by: Mark Kettenis <[email protected]>
you may want to review the synaptics driver for this as well, iirc it also uses huge delays. Reviewed-by: Peter Hutterer <[email protected]> Cheers, Peter > --- > Xext/sync.c | 7 ++----- > 1 file changed, 2 insertions(+), 5 deletions(-) > > diff --git a/Xext/sync.c b/Xext/sync.c > index 2d58ea1..c33b5b5 100644 > --- a/Xext/sync.c > +++ b/Xext/sync.c > @@ -2731,27 +2731,24 @@ IdleTimeBlockHandler(pointer pCounter, struct timeval > **wt, pointer LastSelectMa > * If we've been idle more than it, and someone wants to know about > * that level-triggered, schedule an immediate wakeup. > */ > - unsigned long timeout = -1; > > if (XSyncValueLessThan(idle, *greater)) { > XSyncValue value; > Bool overflow; > > XSyncValueSubtract(&value, *greater, idle, &overflow); > - timeout = min(timeout, XSyncValueLow32(value)); > + AdjustWaitForDelay(wt, XSyncValueLow32(value)); > } > else { > for (list = counter->sync.pTriglist; list; > list = list->next) { > trig = list->pTrigger; > if (trig->CheckTrigger(trig, old_idle)) { > - timeout = min(timeout, 0); > + AdjustWaitForDelay(wt, 0); > break; > } > } > } > - > - AdjustWaitForDelay(wt, timeout); > } > > counter->value = old_idle; /* pop */ > -- > 1.8.4.3 > > _______________________________________________ > [email protected]: X.Org development > Archives: http://lists.x.org/archives/xorg-devel > Info: http://lists.x.org/mailman/listinfo/xorg-devel > _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
