summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>1998-01-11 00:44:31 +0000
committerphk <phk@FreeBSD.org>1998-01-11 00:44:31 +0000
commit8a2e578b97eae342a68b0c47bf3bd7f938f4d2aa (patch)
tree87dc570121653b42337d2c7fc30ffa0ea5ebcf99
parent1b3b485dd95106bf6d621b1c70489d40371a81b7 (diff)
downloadFreeBSD-src-8a2e578b97eae342a68b0c47bf3bd7f938f4d2aa.zip
FreeBSD-src-8a2e578b97eae342a68b0c47bf3bd7f938f4d2aa.tar.gz
Fix softclock calling so we don't loose timeouts (I broke this ~10h ago)
-rw-r--r--sys/kern/kern_clock.c8
-rw-r--r--sys/kern/kern_tc.c8
-rw-r--r--sys/kern/kern_timeout.c8
-rw-r--r--sys/sys/callout.h4
4 files changed, 16 insertions, 12 deletions
diff --git a/sys/kern/kern_clock.c b/sys/kern/kern_clock.c
index 87ac79c..8688da2 100644
--- a/sys/kern/kern_clock.c
+++ b/sys/kern/kern_clock.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)kern_clock.c 8.5 (Berkeley) 1/21/94
- * $Id: kern_clock.c,v 1.49 1998/01/10 13:16:19 phk Exp $
+ * $Id: kern_clock.c,v 1.50 1998/01/10 14:55:02 phk Exp $
*/
/* Portions of this software are covered by the following: */
@@ -629,7 +629,11 @@ hardclock(frame)
CPU_CLOCKUPDATE(&time, &newtime);
}
- setsoftclock();
+ if (TAILQ_FIRST(&callwheel[ticks & callwheelmask]) == NULL) {
+ softticks++;
+ } else {
+ setsoftclock();
+ }
}
void
diff --git a/sys/kern/kern_tc.c b/sys/kern/kern_tc.c
index 87ac79c..8688da2 100644
--- a/sys/kern/kern_tc.c
+++ b/sys/kern/kern_tc.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)kern_clock.c 8.5 (Berkeley) 1/21/94
- * $Id: kern_clock.c,v 1.49 1998/01/10 13:16:19 phk Exp $
+ * $Id: kern_clock.c,v 1.50 1998/01/10 14:55:02 phk Exp $
*/
/* Portions of this software are covered by the following: */
@@ -629,7 +629,11 @@ hardclock(frame)
CPU_CLOCKUPDATE(&time, &newtime);
}
- setsoftclock();
+ if (TAILQ_FIRST(&callwheel[ticks & callwheelmask]) == NULL) {
+ softticks++;
+ } else {
+ setsoftclock();
+ }
}
void
diff --git a/sys/kern/kern_timeout.c b/sys/kern/kern_timeout.c
index a3c4462..2390b4d 100644
--- a/sys/kern/kern_timeout.c
+++ b/sys/kern/kern_timeout.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)kern_clock.c 8.5 (Berkeley) 1/21/94
- * $Id: kern_timeout.c,v 1.49 1998/01/10 13:16:26 phk Exp $
+ * $Id: kern_timeout.c,v 1.50 1998/01/10 14:55:14 phk Exp $
*/
/* Portions of this software are covered by the following: */
@@ -82,7 +82,7 @@ struct callout_list callfree;
int callwheelsize, callwheelbits, callwheelmask;
struct callout_tailq *callwheel;
-static int softticks; /* Like ticks, but for softclock(). */
+int softticks; /* Like ticks, but for softclock(). */
static struct callout *nextsoftcheck; /* Next callout to be checked. */
/*
@@ -119,10 +119,6 @@ softclock()
* we last allowed interrupts.
*/
- if (TAILQ_FIRST(&callwheel[ticks & callwheelmask]) == NULL) {
- softticks++;
- return;
- }
(void)splsoftclock();
diff --git a/sys/sys/callout.h b/sys/sys/callout.h
index 3695c6c..57ae78f 100644
--- a/sys/sys/callout.h
+++ b/sys/sys/callout.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)callout.h 8.2 (Berkeley) 1/21/94
- * $Id: callout.h,v 1.9 1997/09/24 16:39:27 gibbs Exp $
+ * $Id: callout.h,v 1.10 1997/12/01 05:45:15 davidg Exp $
*/
#ifndef _SYS_CALLOUT_H_
@@ -66,7 +66,7 @@ extern struct callout_list callfree;
extern struct callout *callout;
extern int ncallout;
extern struct callout_tailq *callwheel;
-extern int callwheelsize, callwheelbits, callwheelmask;
+extern int callwheelsize, callwheelbits, callwheelmask, softticks;
#endif /* KERNEL */
#endif /* _SYS_CALLOUT_H_ */
OpenPOWER on IntegriCloud