From a10b27f66f181fb5c07568146917d72b9636e414 Mon Sep 17 00:00:00 2001 From: Arjan van de Ven Date: Sun, 7 Sep 2008 16:08:55 -0700 Subject: [PATCH] --- yaml --- r: 117615 b: refs/heads/master c: 96d2ab484e7a9bafdab44b8c7d1ef5944319b18c h: refs/heads/master i: 117613: 94ef993e40e11de04e47aecd63e27d7c96e68549 117611: 6945006a70edc6733a8a8ad39913a47ce4a6c5b8 117607: 38136ca91b6baedb5f875cf74be6383f1d97fc46 117599: c8344f0dbb40c08104a25c2e8dcd3e0516829339 v: v3 --- [refs] | 2 +- trunk/fs/select.c | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 1e57e7004c30..9d4bf4ae4e7f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 704af52bd13a5d9f3c60c496c68e752fafdfb434 +refs/heads/master: 96d2ab484e7a9bafdab44b8c7d1ef5944319b18c diff --git a/trunk/fs/select.c b/trunk/fs/select.c index fdd8584e536d..448e44001286 100644 --- a/trunk/fs/select.c +++ b/trunk/fs/select.c @@ -41,9 +41,9 @@ * better solutions.. */ -static unsigned long __estimate_accuracy(struct timespec *tv) +static long __estimate_accuracy(struct timespec *tv) { - unsigned long slack; + long slack; int divfactor = 1000; if (task_nice(current) > 0) @@ -54,10 +54,13 @@ static unsigned long __estimate_accuracy(struct timespec *tv) if (slack > 100 * NSEC_PER_MSEC) slack = 100 * NSEC_PER_MSEC; + + if (slack < 0) + slack = 0; return slack; } -static unsigned long estimate_accuracy(struct timespec *tv) +static long estimate_accuracy(struct timespec *tv) { unsigned long ret; struct timespec now; @@ -330,7 +333,7 @@ int do_select(int n, fd_set_bits *fds, struct timespec *end_time) timed_out = 1; } - if (end_time) + if (end_time && !timed_out) slack = estimate_accuracy(end_time); retval = 0; @@ -656,7 +659,7 @@ static int do_poll(unsigned int nfds, struct poll_list *list, timed_out = 1; } - if (end_time) + if (end_time && !timed_out) slack = estimate_accuracy(end_time); for (;;) {