Messages in this thread | | | Date | Fri, 20 Jan 2006 08:33:07 -0800 | From | George Anzinger <> | Subject | Re: [PATCH 7/7] [hrtimers] Set correct initial expiry time for relative SIGEV_NONE timers |
| |
Thomas Gleixner wrote: > The expiry time for relative timers with SIGEV_NONE set was never > updated to the correct value. > > Pointed out by George Anzinger. > > Signed-off-by: Thomas Gleixner <tglx@linutronix.de> > > --- > > kernel/posix-timers.c | 7 ++++++- > 1 files changed, 6 insertions(+), 1 deletions(-) > > a1f15939b7af18c5abcd4810ccd512467c77a6b1 > diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c > index 28e72fd..e2fa4c0 100644 > --- a/kernel/posix-timers.c > +++ b/kernel/posix-timers.c > @@ -724,8 +724,13 @@ common_timer_set(struct k_itimer *timr, > timr->it.real.interval = timespec_to_ktime(new_setting->it_interval); > > /* SIGEV_NONE timers are not queued ! See common_timer_get */ > - if (((timr->it_sigev_notify & ~SIGEV_THREAD_ID) == SIGEV_NONE)) > + if (((timr->it_sigev_notify & ~SIGEV_THREAD_ID) == SIGEV_NONE)) { > + /* Setup correct expiry time for relative timers */ > + if (mode == HRTIMER_REL) > + timer->expires = ktime_add(timer-expires, > + timer->base->get_time()); This is only part of the problem. When the user does a timer_gettime() the expiry time is taken from the hrtimer field and NOT the posix-timer part. Somewhere this value needs to be copied to the hrtimer sub structure.
George --
> return 0; > + } > > hrtimer_start(timer, timer->expires, mode); > return 0;
-- George Anzinger george@wildturkeyranch.net HRT (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/
| |