summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorjeff <jeff@FreeBSD.org>2002-11-21 08:57:08 +0000
committerjeff <jeff@FreeBSD.org>2002-11-21 08:57:08 +0000
commit07d36defefe91253b9194a663eeac6867b1c5a0f (patch)
tree76b705237f0cafaf3da58d18306ef13a8482cc40 /sys
parent22dd80b8068b411e1b05b4f0e9d8e2de6dccf33e (diff)
downloadFreeBSD-src-07d36defefe91253b9194a663eeac6867b1c5a0f.zip
FreeBSD-src-07d36defefe91253b9194a663eeac6867b1c5a0f.tar.gz
- Move FSCALE back to kern_sync. This is not scheduler specific.
- Create a new callout for lbolt and move it out of schedcpu(). This is not scheduler specific either. Approved by: re
Diffstat (limited to 'sys')
-rw-r--r--sys/kern/kern_synch.c15
-rw-r--r--sys/kern/sched_4bsd.c5
2 files changed, 15 insertions, 5 deletions
diff --git a/sys/kern/kern_synch.c b/sys/kern/kern_synch.c
index ab5427f..66b3411 100644
--- a/sys/kern/kern_synch.c
+++ b/sys/kern/kern_synch.c
@@ -75,6 +75,7 @@ int hogticks;
int lbolt;
static struct callout loadav_callout;
+static struct callout lbolt_callout;
struct loadavg averunnable =
{ {0, 0, 0}, FSCALE }; /* load average, of runnable procs */
@@ -88,8 +89,13 @@ static fixpt_t cexp[3] = {
0.9944598480048967 * FSCALE, /* exp(-1/180) */
};
+/* kernel uses `FSCALE', userland (SHOULD) use kern.fscale */
+static int fscale __unused = FSCALE;
+SYSCTL_INT(_kern, OID_AUTO, fscale, CTLFLAG_RD, 0, FSCALE, "");
+
static void endtsleep(void *);
static void loadav(void *arg);
+static void lboltcb(void *arg);
/*
* We're only looking at 7 bits of the address; everything is
@@ -625,15 +631,24 @@ nextproc:
loadav, NULL);
}
+static void
+lboltcb(void *arg)
+{
+ wakeup(&lbolt);
+ callout_reset(&lbolt_callout, hz, lboltcb, NULL);
+}
+
/* ARGSUSED */
static void
sched_setup(dummy)
void *dummy;
{
callout_init(&loadav_callout, 0);
+ callout_init(&lbolt_callout, 1);
/* Kick off timeout driven events by calling first time. */
loadav(NULL);
+ lboltcb(NULL);
}
/*
diff --git a/sys/kern/sched_4bsd.c b/sys/kern/sched_4bsd.c
index 236a3c7..06ea638 100644
--- a/sys/kern/sched_4bsd.c
+++ b/sys/kern/sched_4bsd.c
@@ -203,10 +203,6 @@ roundrobin(void *arg)
static fixpt_t ccpu = 0.95122942450071400909 * FSCALE; /* exp(-1/20) */
SYSCTL_INT(_kern, OID_AUTO, ccpu, CTLFLAG_RD, &ccpu, 0, "");
-/* kernel uses `FSCALE', userland (SHOULD) use kern.fscale */
-static int fscale __unused = FSCALE;
-SYSCTL_INT(_kern, OID_AUTO, fscale, CTLFLAG_RD, 0, FSCALE, "");
-
/*
* If `ccpu' is not equal to `exp(-1/20)' and you still want to use the
* faster/more-accurate formula, you'll have to estimate CCPU_SHIFT below
@@ -328,7 +324,6 @@ schedcpu(void *arg)
mtx_unlock_spin(&sched_lock);
} /* end of process loop */
sx_sunlock(&allproc_lock);
- wakeup(&lbolt);
callout_reset(&schedcpu_callout, hz, schedcpu, NULL);
}
OpenPOWER on IntegriCloud