summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtur Grabowski <art@cvs.openbsd.org>2004-06-21 23:12:15 +0000
committerArtur Grabowski <art@cvs.openbsd.org>2004-06-21 23:12:15 +0000
commitc2ad14942ce1145ecf62f4fa957f2bcb408bb556 (patch)
treece1fef682a31add39cf5b210232a5e76c8d59198
parent2d279ec704cd238ddf5e6e667ea7d12a6bb209a3 (diff)
Put back the moving of schedstate_percpu into sched.h. This time expose
it to userland so that i386 builds (other architectures didn't show the problem). deraadt@ ok
-rw-r--r--sys/arch/i386/include/cpu.h4
-rw-r--r--sys/arch/sparc64/include/cpu.h4
-rw-r--r--sys/sys/proc.h41
-rw-r--r--sys/sys/sched.h64
4 files changed, 46 insertions, 67 deletions
diff --git a/sys/arch/i386/include/cpu.h b/sys/arch/i386/include/cpu.h
index 855cfc8dbd6..18da562cd3b 100644
--- a/sys/arch/i386/include/cpu.h
+++ b/sys/arch/i386/include/cpu.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: cpu.h,v 1.63 2004/06/20 08:25:30 deraadt Exp $ */
+/* $OpenBSD: cpu.h,v 1.64 2004/06/21 23:12:14 art Exp $ */
/* $NetBSD: cpu.h,v 1.35 1996/05/05 19:29:26 christos Exp $ */
/*-
@@ -72,7 +72,7 @@
#include <sys/device.h>
#include <sys/lock.h> /* will also get LOCKDEBUG */
-#include <sys/proc.h>
+#include <sys/sched.h>
struct intrsource;
diff --git a/sys/arch/sparc64/include/cpu.h b/sys/arch/sparc64/include/cpu.h
index 6b1fb127ece..faa8964f581 100644
--- a/sys/arch/sparc64/include/cpu.h
+++ b/sys/arch/sparc64/include/cpu.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: cpu.h,v 1.27 2004/06/20 08:25:30 deraadt Exp $ */
+/* $OpenBSD: cpu.h,v 1.28 2004/06/21 23:12:14 art Exp $ */
/* $NetBSD: cpu.h,v 1.28 2001/06/14 22:56:58 thorpej Exp $ */
/*
@@ -75,7 +75,7 @@
#include <machine/reg.h>
#include <machine/intr.h>
-#include <sys/proc.h>
+#include <sys/sched.h>
/*
* The cpu_info structure is part of a 64KB structure mapped both the kernel
diff --git a/sys/sys/proc.h b/sys/sys/proc.h
index 9b0d4fc5b23..11049171027 100644
--- a/sys/sys/proc.h
+++ b/sys/sys/proc.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: proc.h,v 1.73 2004/06/20 08:25:30 deraadt Exp $ */
+/* $OpenBSD: proc.h,v 1.74 2004/06/21 23:12:14 art Exp $ */
/* $NetBSD: proc.h,v 1.44 1996/04/22 01:23:21 christos Exp $ */
/*-
@@ -46,46 +46,7 @@
#include <sys/timeout.h> /* For struct timeout. */
#include <sys/event.h> /* For struct klist */
-/*
- * CPU states.
- * XXX Not really scheduler state, but no other good place to put
- * it right now, and it really is per-CPU.
- */
-#define CP_USER 0
-#define CP_NICE 1
-#define CP_SYS 2
-#define CP_INTR 3
-#define CP_IDLE 4
-#define CPUSTATES 5
-
-/*
- * Per-CPU scheduler state.
- */
-struct schedstate_percpu {
- struct timeval spc_runtime; /* time curproc started running */
- __volatile int spc_schedflags; /* flags; see below */
- u_int spc_schedticks; /* ticks for schedclock() */
- u_int64_t spc_cp_time[CPUSTATES]; /* CPU state statistics */
- u_char spc_curpriority; /* usrpri of curproc */
- int spc_rrticks; /* ticks until roundrobin() */
- int spc_pscnt; /* prof/stat counter */
- int spc_psdiv; /* prof/stat divisor */
-};
-
-/* spc_flags */
-#define SPCF_SEENRR 0x0001 /* process has seen roundrobin() */
-#define SPCF_SHOULDYIELD 0x0002 /* process should yield the CPU */
-#define SPCF_SWITCHCLEAR (SPCF_SEENRR|SPCF_SHOULDYIELD)
-
#ifdef __HAVE_CPUINFO
-/*
- * These are the fields we require in struct cpu_info that we get from
- * curcpu():
- *
- * struct proc *ci_curproc;
- * struct schedstate_percpu ci_schedstate;
- * cpuid_t ci_cpuid;
- */
#define curproc curcpu()->ci_curproc
#endif
diff --git a/sys/sys/sched.h b/sys/sys/sched.h
index 65a35b4e7cd..97c68dce08b 100644
--- a/sys/sys/sched.h
+++ b/sys/sys/sched.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: sched.h,v 1.8 2004/06/20 08:25:30 deraadt Exp $ */
+/* $OpenBSD: sched.h,v 1.9 2004/06/21 23:12:14 art Exp $ */
/* $NetBSD: sched.h,v 1.2 1999/02/28 18:14:58 ross Exp $ */
/*-
@@ -80,8 +80,40 @@
* Posix defines a <sched.h> which may want to include <sys/sched.h>
*/
+/*
+ * CPU states.
+ * XXX Not really scheduler state, but no other good place to put
+ * it right now, and it really is per-CPU.
+ */
+#define CP_USER 0
+#define CP_NICE 1
+#define CP_SYS 2
+#define CP_INTR 3
+#define CP_IDLE 4
+#define CPUSTATES 5
+
+/*
+ * Per-CPU scheduler state.
+ * XXX - expose to userland for now.
+ */
+struct schedstate_percpu {
+ struct timeval spc_runtime; /* time curproc started running */
+ __volatile int spc_schedflags; /* flags; see below */
+ u_int spc_schedticks; /* ticks for schedclock() */
+ u_int64_t spc_cp_time[CPUSTATES]; /* CPU state statistics */
+ u_char spc_curpriority; /* usrpri of curproc */
+ int spc_rrticks; /* ticks until roundrobin() */
+ int spc_pscnt; /* prof/stat counter */
+ int spc_psdiv; /* prof/stat divisor */
+};
+
#ifdef _KERNEL
+/* spc_flags */
+#define SPCF_SEENRR 0x0001 /* process has seen roundrobin() */
+#define SPCF_SHOULDYIELD 0x0002 /* process should yield the CPU */
+#define SPCF_SWITCHCLEAR (SPCF_SEENRR|SPCF_SHOULDYIELD)
+
#define PPQ (128 / NQS) /* priorities per queue */
#define NICE_WEIGHT 2 /* priorities per nice level */
#define ESTCPULIM(e) min((e), NICE_WEIGHT * PRIO_MAX - PPQ)
@@ -89,36 +121,22 @@
extern int schedhz; /* ideally: 16 */
extern int rrticks_init; /* ticks per roundrobin() */
-#ifdef _SYS_PROC_H_
+struct proc;
void schedclock(struct proc *);
#ifdef __HAVE_CPUINFO
+struct cpu_info;
void roundrobin(struct cpu_info *);
#endif
-static __inline void scheduler_fork_hook(
- struct proc *parent, struct proc *child);
-static __inline void scheduler_wait_hook(
- struct proc *parent, struct proc *child);
/* Inherit the parent's scheduler history */
-
-static __inline void
-scheduler_fork_hook(parent, child)
- struct proc *parent, *child;
-{
- child->p_estcpu = parent->p_estcpu;
-}
+#define scheduler_fork_hook(parent, child) do { \
+ (child)->p_estcpu = (parent)->p_estcpu; \
+} while (0)
/* Chargeback parents for the sins of their children. */
-
-static __inline void
-scheduler_wait_hook(parent, child)
- struct proc *parent, *child;
-{
- /* XXX just return if parent == init?? */
-
- parent->p_estcpu = ESTCPULIM(parent->p_estcpu + child->p_estcpu);
-}
-#endif /* _SYS_PROC_H_ */
+#define scheduler_wait_hook(parent, child) do { \
+ (parent)->p_estcpu = ESTCPULIM((parent)->p_estcpu + (child)->p_estcpu);\
+} while (0)
#ifndef splsched
#define splsched() splhigh()