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:
parent
49de9dcd8b
commit
a305896436
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=90260
@ -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);
|
||||
|
@ -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));
|
||||
|
Loading…
Reference in New Issue
Block a user