From d0f44978bc7960bcc2c2286a05177c175f11926e Mon Sep 17 00:00:00 2001 From: phk Date: Tue, 5 Feb 2002 20:44:56 +0000 Subject: Let the number of timecounters follow hz, otherwise people with HZ=BIGNUM will strain the assumptions behind timecounters to the point where they break. This may or may not help people seeing microuptime() backwards messages. Make the global timecounter variable volatile, it makes no difference in the code GCC generates, but it makes represents the intent correctly. Thanks to: jdp MFC after: 2 weeks --- sys/kern/kern_tc.c | 5 +++-- sys/sys/timetc.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'sys') diff --git a/sys/kern/kern_tc.c b/sys/kern/kern_tc.c index 92e11c3..fa1832a 100644 --- a/sys/kern/kern_tc.c +++ b/sys/kern/kern_tc.c @@ -24,7 +24,7 @@ * Number of timecounters used to implement stable storage */ #ifndef NTIMECOUNTER -#define NTIMECOUNTER 45 +#define NTIMECOUNTER hz #endif static MALLOC_DEFINE(M_TIMECOUNTER, "timecounter", @@ -80,7 +80,7 @@ static struct timecounter dummy_timecounter = { "dummy" }; -struct timecounter *timecounter = &dummy_timecounter; +struct timecounter *volatile timecounter = &dummy_timecounter; static __inline unsigned tco_delta(struct timecounter *tc) @@ -263,6 +263,7 @@ tc_init(struct timecounter *tc) tc->tc_other = t1; *t1 = *tc; t2 = t1; + t3 = NULL; for (i = 1; i < NTIMECOUNTER; i++) { MALLOC(t3, struct timecounter *, sizeof *t3, M_TIMECOUNTER, M_WAITOK); diff --git a/sys/sys/timetc.h b/sys/sys/timetc.h index ac62dc7..9897f4d 100644 --- a/sys/sys/timetc.h +++ b/sys/sys/timetc.h @@ -93,7 +93,7 @@ struct timecounter { }; #ifdef _KERNEL -extern struct timecounter *timecounter; +extern struct timecounter *volatile timecounter; void tc_init __P((struct timecounter *tc)); void tc_setclock __P((struct timespec *ts)); -- cgit v1.1