Files
linux/kernel
Stanislaw Gruszka ae1a78eecc cpu-timers: Return correct previous timer reload value
According POSIX we need to correctly set old timer it_interval value when
user request that in timer_settime().  Tested using below program.

 #include <sys/time.h>
 #include <signal.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <time.h>
 #include <unistd.h>
 #include <assert.h>

 int main(void)
 {
	struct sigaction act;
	struct sigevent evt = { };
	timer_t tid;
	struct itimerspec spec, u_spec, k_spec;

	evt.sigev_notify = SIGEV_SIGNAL;
	evt.sigev_signo = SIGPROF;
	assert(timer_create(CLOCK_PROCESS_CPUTIME_ID, &evt,  &tid) == 0);

	spec.it_value.tv_sec = 1;
	spec.it_value.tv_nsec = 2;
	spec.it_interval.tv_sec = 3;
	spec.it_interval.tv_nsec = 4;
	u_spec = spec;
	assert(timer_settime(tid, 0, &spec,  NULL) == 0);

	spec.it_value.tv_sec = 5;
	spec.it_value.tv_nsec = 6;
	spec.it_interval.tv_sec = 7;
	spec.it_interval.tv_nsec = 8;
	assert(timer_settime(tid, 0, &spec,  &k_spec) == 0);

 #define PRT(val) printf(#val ":\t%d/%d\n", (int) u_spec.val, (int) k_spec.val)
	PRT(it_value.tv_sec);
	PRT(it_value.tv_nsec);
	PRT(it_interval.tv_sec);
	PRT(it_interval.tv_nsec);

	return 0;
 }

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Cc: Balbir Singh <balbir@in.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2010-03-12 22:40:40 +01:00
..
2009-09-21 14:29:21 +02:00
2009-12-15 08:53:10 -08:00
2010-03-03 14:07:57 -05:00
2009-06-24 00:02:38 -04:00
2010-02-25 12:02:13 +01:00
2009-12-06 21:10:56 +01:00
2010-02-03 10:21:57 +11:00
2009-09-18 09:48:52 -07:00
2010-03-06 11:26:33 -08:00
2009-06-16 19:47:48 -07:00
2009-12-14 23:55:34 +01:00
2010-01-21 13:40:18 +01:00
2009-07-24 10:53:29 +02:00
2009-01-14 18:09:02 +01:00
2009-06-18 13:03:56 -07:00
2010-02-10 17:47:17 -08:00
2010-02-26 08:20:46 +01:00
2010-03-06 11:26:32 -08:00
2009-12-09 10:03:07 +01:00
2010-03-06 11:26:33 -08:00
2010-03-06 11:26:33 -08:00
2010-02-18 14:30:18 -08:00
2009-12-22 14:10:37 -08:00
2010-03-06 11:26:23 -08:00
2009-09-23 18:13:10 -07:00
2010-01-21 13:40:18 +01:00
2009-06-18 13:03:55 -07:00