diff options
author | tmm <tmm@FreeBSD.org> | 2003-05-29 17:49:21 +0000 |
---|---|---|
committer | tmm <tmm@FreeBSD.org> | 2003-05-29 17:49:21 +0000 |
commit | e330758d56bad341f3b6004687dae494c845e9f0 (patch) | |
tree | cfaf16cfa37c0aa9dd63a002ddd5c024618102eb /lib/libthr/thread/thr_gc.c | |
parent | cccb8a341841afbb6950f77adfed8b5bf81138ae (diff) | |
download | FreeBSD-src-e330758d56bad341f3b6004687dae494c845e9f0.zip FreeBSD-src-e330758d56bad341f3b6004687dae494c845e9f0.tar.gz |
Completely disable interrupts (not just raise %pil) when calculating the
value to be written into tick_compare in tick_hardclock(). While
we were taking care that the value to be written was at least TICK_GRACE
ticks in the future, a vector interrupt could happen between calculating
the value and writing it. If it took longer than TICK_GRACE to complete
(which is doubtful for a single device-triggered vector interrupt, but
quite likely for some IPIs), the value written would be in the past
and tick interrupts (which drive hardclock and statclock) would stop
until %tick wraps around, which takes a long time.
Also, increase TICK_GRACE from 1000 to 10000 for good measure.
Reported by: kris
Reviewed by: jake
Approved by: re (scottl)
Diffstat (limited to 'lib/libthr/thread/thr_gc.c')
0 files changed, 0 insertions, 0 deletions