Messages in this thread | | | Date | Wed, 16 Mar 2005 22:29:45 -0800 | From | George Anzinger <> | Subject | Re: [PATCH 2.6] fix POSIX timers expire before their scheduled time |
| |
Liu, Hong wrote: > POSIX says: POSIX timers should not expire before their scheduled time. > > Due to the timer started between jiffies, there are cases that the timer > will expire before its scheduled time. > This patch ensures timers will not expire early. > > --- a/kernel/posix-timers.c 2005-03-10 15:46:27.329333664 +0800 > +++ b/kernel/posix-timers.c 2005-03-10 15:50:11.884196136 +0800 > @@ -957,7 +957,8 @@ > &expire_64, &(timr->wall_to_prev))) { > return -EINVAL; > } > - timr->it_timer.expires = (unsigned long)expire_64; > + timr->it_timer.expires = (unsigned long)expire_64 + 1; > tstojiffie(&new_setting->it_interval, clock->res, &expire_64); > timr->it_incr = (unsigned long)expire_64; > Has this happened?? The following code (in adjust_abs_time()) is supposed to prevent this sort of thing:
if (oc.tv_sec | oc.tv_nsec) { oc.tv_nsec += clock->res; timespec_norm(&oc); }
Also, we run rather extensive tests for this sort of thing.
-- George Anzinger george@mvista.com High-res-timers: http://sourceforge.net/projects/high-res-timers/
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |