Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!iuvax!pur-ee!pur-phy!ray From: ray@maxwell.physics.purdue.edu (Ray Moody) Newsgroups: comp.bugs.4bsd Subject: Gross bug in sys/kern_clock.c Message-ID: <2040@pur-phy> Date: 13 Mar 89 15:58:14 GMT Sender: news@pur-phy Reply-To: ray@maxwell.physics.purdue.edu (Ray Moody) Organization: Purdue Univ. Physics Dept., W. Lafayette, IN Lines: 93 Index: sys/sys/kern_clock.c Description: Some variable names are messed up in sys/sys/kern_clock.c Repeat-By: Inspection, mainly. We noticed this bug in our system when our clocks started loosing about half an hour every day. (No, I don't happen to know the magic numbers to give adjtime() to cause this.) Fix: *** /tmp/,RCSt1007315 Mon Mar 13 10:52:35 1989 --- /tmp/,RCSt2007315 Mon Mar 13 10:52:36 1989 *************** *** 78,84 register struct proc *p; register int s; int needsoft = 0; ! extern int tickdelta, tickadj; #ifdef is68k lbolt++; /* ISI: SYSV */ --- 78,84 ----- register struct proc *p; register int s; int needsoft = 0; ! extern int tickdelta, timedelta; #ifdef is68k lbolt++; /* ISI: SYSV */ *************** *** 202,208 * so we don't keep the relatively high clock interrupt * priority any longer than necessary. */ ! if (tickdelta == 0) BUMPTIME(&time, tick) else { register delta; --- 202,208 ----- * so we don't keep the relatively high clock interrupt * priority any longer than necessary. */ ! if (timedelta == 0) BUMPTIME(&time, tick) else { register delta; *************** *** 207,215 else { register delta; ! if (tickdelta < 0) { ! delta = tick - tickadj; ! tickdelta += tickadj; } else { delta = tick + tickadj; tickdelta -= tickadj; --- 207,215 ----- else { register delta; ! if (timedelta < 0) { ! delta = tick - tickdelta; ! timedelta += tickdelta; } else { delta = tick + tickdelta; timedelta -= tickdelta; *************** *** 211,218 delta = tick - tickadj; tickdelta += tickadj; } else { ! delta = tick + tickadj; ! tickdelta -= tickadj; } BUMPTIME(&time, delta); /* KLUDGE SUN NFS code ???? --- 211,218 ----- delta = tick - tickdelta; timedelta += tickdelta; } else { ! delta = tick + tickdelta; ! timedelta -= tickdelta; } BUMPTIME(&time, delta); /* KLUDGE SUN NFS code ????