Date: Sat, 3 Apr 2004 08:11:33 -0800 (PST) From: Julian Elischer <julian@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 50264 for review Message-ID: <200404031611.i33GBXC3089724@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=50264 Change 50264 by julian@julian_jules1 on 2004/04/03 08:11:00 clean up allocatipon of scheduler structure extensions for proc0 Affected files ... .. //depot/projects/nsched/sys/kern/scheduler/4bsd/sched_4bsd.c#3 edit .. //depot/projects/nsched/sys/kern/scheduler/4bsd/sched_4bsd_kse.c#5 edit .. //depot/projects/nsched/sys/kern/scheduler/4bsd/sched_4bsd_kse.h#3 edit Differences ... ==== //depot/projects/nsched/sys/kern/scheduler/4bsd/sched_4bsd.c#3 (text+ko) ==== @@ -80,15 +80,6 @@ #define KSE_CAN_MIGRATE(ke) \ ((ke)->ke_thread->td_pinned == 0 && ((ke)->ke_flags & KEF_BOUND) == 0) -static struct ke_sched ke_sched; -static struct kg_sched kg_sched; -static struct td_sched td_sched; - -struct ke_sched *kse0_sched = &ke_sched; -struct kg_sched *ksegrp0_sched = &kg_sched; -struct p_sched *proc0_sched = NULL; -struct td_sched *thread0_sched = &td_sched; - static int sched_tdcnt; /* Total runnable threads in the system. */ static int sched_quantum; /* Roundrobin scheduling quantum in ticks. */ #define SCHED_QUANTUM (hz / 10) /* Default sched quantum */ @@ -849,16 +840,19 @@ { return (sizeof(struct kse) + sizeof(struct ke_sched)); } + int sched_sizeof_ksegrp(void) { return (sizeof(struct ksegrp) + sizeof(struct kg_sched)); } + int sched_sizeof_proc(void) { return (sizeof(struct proc)); } + int sched_sizeof_thread(void) { ==== //depot/projects/nsched/sys/kern/scheduler/4bsd/sched_4bsd_kse.c#5 (text+ko) ==== @@ -31,8 +31,16 @@ #include <kern/scheduler/4bsd/sched_4bsd_kse.h> static uma_zone_t kse_zone; + struct kse kse0; +static struct ke_sched ke_sched0; +static struct kg_sched kg_sched0; +static struct td_sched td_sched0; + static struct kse * kse_alloc(void); +static void kse_link(struct proc *p, struct kse *ke, struct ksegrp *kg); +static void kse_unlink(struct kse *ke); + extern struct mtx kse_zombie_lock; TAILQ_HEAD(, kse) zombie_kses = TAILQ_HEAD_INITIALIZER(zombie_kses); @@ -73,13 +81,14 @@ /* * Set up the scheduler specific parts of proc0. */ - kse0.ke_sched = kse0_sched; - ksegrp0.kg_sched = ksegrp0_sched; - proc0.p_sched = proc0_sched; - thread0.td_sched = thread0_sched; + kse0.ke_sched = &ke_sched0; + ksegrp0.kg_sched = &kg_sched0; + proc0.p_sched = NULL; /* XXX */ + thread0.td_sched = &td_sched0; + kse0.ke_state = KES_THREAD; + kse_link(&proc0, &kse0, &ksegrp0); kse0.ke_thread = &thread0; - kse_link(&kse0, &ksegrp0); thread0.td_kse = &kse0; /* we are running */ @@ -105,7 +114,7 @@ mtx_lock_spin(&sched_lock); thread_link(td0, td->td_ksegrp); - kse_link(ke0, td->td_ksegrp); + kse_link(td->td_proc, ke0, td->td_ksegrp); /* Bind this thread and kse together. */ td0->td_kse = ke0; @@ -171,10 +180,8 @@ * KSE is linked into kse group. */ void -kse_link(struct kse *ke, struct ksegrp *kg) +kse_link(struct proc *p, struct kse *ke, struct ksegrp *kg) { - struct proc *p = kg->kg_proc; - TAILQ_INSERT_HEAD(&kg->kg_kseq, ke, ke_kglist); kg->kg_kses++; ke->ke_state = KES_UNQUEUED; @@ -192,7 +199,7 @@ ke = kse_alloc(); if (ke) { - kse_link(ke, kg); + kse_link(p, ke, kg); td->td_kse = ke; ke->ke_thread = td; return (0); @@ -340,7 +347,7 @@ mtx_unlock_spin(&sched_lock); #endif mtx_lock_spin(&sched_lock); - kse_link(newke, kg); + kse_link(kg->kg_proc, newke, kg); sched_fork_kse(curthread, newke); /* Add engine */ kse_reassign(newke); ==== //depot/projects/nsched/sys/kern/scheduler/4bsd/sched_4bsd_kse.h#3 (text+ko) ==== @@ -129,8 +129,6 @@ void kse_free(struct kse *ke); void kse_stash(struct kse *ke); void kse_reassign(struct kse *ke); -void kse_link(struct kse *ke, struct ksegrp *kg); -void kse_unlink(struct kse *ke); void sched_fork_kse(struct thread *parenttd, struct kse *newke); void sched_exit_kse(struct proc *parent, struct thread *childtd);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200404031611.i33GBXC3089724>