cvs commit: src/sys/i386/i386 src/sys/i386/isa src/sys/kern src/sys/sys
Matthew Dillon
dillon at crater.dragonflybsd.org
Sat Nov 20 12:26:13 PST 2004
dillon 2004/11/20 12:25:13 PST
DragonFly src repository
Modified files:
sys/i386/i386 vm86.c
sys/i386/isa clock.c
sys/kern kern_clock.c kern_systimer.c
sys/sys systimer.h time.h
Log:
Add code to the BIOS VM86 emulator to detect writes to the 8254. If a
write is detected the 8254 is reset after the bios call returns and the
event is reported. Some bioses, in particular video bioses, uses timer 2
for timing things. We need timer 2 for our master clock.
Remove restoreclocks(). This was causing gd_cpuclock_base to reverse index
and jump the time ahead an hour with a flurry of hardclock interrupts.
Introduce a new systimer API call, systimer_init_periodic_nq(), which
installs a non-queued periodic systimer. Non-queued means that if multiple
events built-up (due to an 8254 glitch, sleep, or other event), only one
event will be reported.
This should fix the BIOS/8254 glitching, the 'hour jump' problem, and
hopefully other timer jumping issues as well.
Bugs-reported-by: Andreas Hauser <andy at xxxxxxxxxxxxxxx>,
Jonathon McKitrick <jcm at xxxxxxxxxxxxxxxxx>,
and others
Revision Changes Path
1.12 +93 -22 src/sys/i386/i386/vm86.c
1.20 +6 -5 src/sys/i386/isa/clock.c
1.27 +10 -33 src/sys/kern/kern_clock.c
1.5 +30 -1 src/sys/kern/kern_systimer.c
1.3 +2 -0 src/sys/sys/systimer.h
1.10 +0 -1 src/sys/sys/time.h
http://www.dragonflybsd.org/cvsweb/src/sys/i386/i386/vm86.c.diff?r1=1.11&r2=1.12&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/i386/isa/clock.c.diff?r1=1.19&r2=1.20&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/kern_clock.c.diff?r1=1.26&r2=1.27&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/kern_systimer.c.diff?r1=1.4&r2=1.5&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/systimer.h.diff?r1=1.2&r2=1.3&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/time.h.diff?r1=1.9&r2=1.10&f=u
More information about the Commits
mailing list