diff options
author | jeff <jeff@FreeBSD.org> | 2002-11-21 01:22:38 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2002-11-21 01:22:38 +0000 |
commit | 49bf96275f3964fb635238eb94eec3afbc449864 (patch) | |
tree | ffffe185be0dc78e5e3c311d7fcb3156b1524543 /sys/kern/kern_proc.c | |
parent | 8fd30b58c6c738e9fb184bb33bf58c140f0fac3a (diff) | |
download | FreeBSD-src-49bf96275f3964fb635238eb94eec3afbc449864.zip FreeBSD-src-49bf96275f3964fb635238eb94eec3afbc449864.tar.gz |
- Implement a mechanism for allowing schedulers to place scheduler dependant
data in the scheduler independant structures (proc, ksegrp, kse, thread).
- Implement unused stubs for this mechanism in sched_4bsd.
Approved by: re
Reviewed by: luigi, trb
Tested on: x86, alpha
Diffstat (limited to 'sys/kern/kern_proc.c')
-rw-r--r-- | sys/kern/kern_proc.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c index a016bba..cf9de34 100644 --- a/sys/kern/kern_proc.c +++ b/sys/kern/kern_proc.c @@ -45,6 +45,7 @@ #include <sys/mutex.h> #include <sys/proc.h> #include <sys/kse.h> +#include <sys/sched.h> #include <sys/smp.h> #include <sys/sysctl.h> #include <sys/filedesc.h> @@ -123,7 +124,7 @@ procinit() LIST_INIT(&zombproc); pidhashtbl = hashinit(maxproc / 4, M_PROC, &pidhash); pgrphashtbl = hashinit(maxproc / 4, M_PROC, &pgrphash); - proc_zone = uma_zcreate("PROC", sizeof (struct proc), + proc_zone = uma_zcreate("PROC", sched_sizeof_proc(), proc_ctor, proc_dtor, proc_init, proc_fini, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); uihashinit(); @@ -137,8 +138,6 @@ proc_ctor(void *mem, int size, void *arg) { struct proc *p; - KASSERT((size == sizeof(struct proc)), - ("size mismatch: %d != %d\n", size, (int)sizeof(struct proc))); p = (struct proc *)mem; } @@ -154,8 +153,6 @@ proc_dtor(void *mem, int size, void *arg) struct kse *ke; /* INVARIANTS checks go here */ - KASSERT((size == sizeof(struct proc)), - ("size mismatch: %d != %d\n", size, (int)sizeof(struct proc))); p = (struct proc *)mem; KASSERT((p->p_numthreads == 1), ("bad number of threads in exiting process")); @@ -194,9 +191,8 @@ proc_init(void *mem, int size) struct ksegrp *kg; struct kse *ke; - KASSERT((size == sizeof(struct proc)), - ("size mismatch: %d != %d\n", size, (int)sizeof(struct proc))); p = (struct proc *)mem; + p->p_sched = (struct p_sched *)&p[1]; vm_proc_new(p); td = thread_alloc(); ke = kse_alloc(); @@ -215,8 +211,6 @@ proc_fini(void *mem, int size) struct ksegrp *kg; struct kse *ke; - KASSERT((size == sizeof(struct proc)), - ("size mismatch: %d != %d\n", size, (int)sizeof(struct proc))); p = (struct proc *)mem; KASSERT((p->p_numthreads == 1), ("bad number of threads in freeing process")); |