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
This commit is contained in:
Poul-Henning Kamp 2002-02-05 20:44:56 +00:00
parent 49de9dcd8b
commit a305896436
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=90260
2 changed files with 4 additions and 3 deletions

View File

@ -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);

View File

@ -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));