2.5.43-tick
PATCH 1/1 2.5.43-tick
This patch appears not to be in 2.5.43, but applies cleanly.
On some ARM platforms, CLOCK_TICK_RATE is not a constant (it is specified at boot time), which means that TICK_USEC/TICK_NSEC is not constant. We therefore can not initialise static variables with these definitions; they must be done at run time.
kernel/timer.c | 7 +++++-- 1 files changed, 5 insertions, 2 deletions
kernel/timer.c +5 -2
@@ -376,8 +376,8 @@/* * Timekeeping variables */ -unsigned long tick_usec =TICK_USEC ;/* ACTHZ period (usec) */ -unsigned long tick_nsec =TICK_NSEC (TICK_USEC );/* USER_HZ period (nsec) */ +unsigned long tick_usec;/* ACTHZ period (usec) */ +unsigned long tick_nsec;/* USER_HZ period (nsec) */ /* The current time */ struct timespec xtime __attribute__ ((aligned (16)));
@@ -1069,6 +1069,9 @@void __init init_timers (void ) {int i, j; + + tick_usec =TICK_USEC ; + tick_nsec =TICK_NSEC (TICK_USEC );for (i =0 ; i <NR_CPUS ; i++) {tvec_base_t *base;
Quoted 7 lines · Russell King
This patch appears not to be in 2.5.43, but applies cleanly.
On some ARM platforms,
CLOCK_TICK_RATEis not a constant (it is specified at boot time), which means that TICK_USEC/TICK_NSEC is not constant. We therefore can not initialise static variables with these definitions; they must be done at run time.
I must be missing something here. Why can't both be done? That is, leave timer.c alone and add code to the arch time init to correct the values?
-g
Quoted 34 lines
kernel/timer.c | 7 +++++-- 1 files changed, 5 insertions, 2 deletionsdiff -ur
orig/kernel/timer.clinux/kernel/timer.ckernel/timer.c Wed Oct 16 09:15:00 2002 renamed from kernel/timer.c Wed Oct 16 09:17:13 2002 +5
-3@@ -376,8 +376,8 @@ /* * Timekeeping variables */ -unsigned long tick_usec = TICK_USEC; /* ACTHZ period (usec) */ -unsigned long tick_nsec = TICK_NSEC(TICK_USEC); /* USER_HZ period (nsec) */ +unsigned long tick_usec; /* ACTHZ period (usec) */ +unsigned long tick_nsec; /* USER_HZ period (nsec) */ /* The current time */ struct timespec xtime __attribute__ ((aligned (16)));@@ -1069,6 +1069,9 @@ void __init init_timers(void) { int i, j; + + tick_usec = TICK_USEC; + tick_nsec = TICK_NSEC(TICK_USEC); for (i = 0; i < NR_CPUS; i++) { tvec_base_t *base; -To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Signature · 5 lines
George Anzinger [email protected] High-res-timers: http://sourceforge.net/projects/high-res-timers/ Preemption patch: http://www.kernel.org/pub/linux/kernel/people/rml