PERFORCE change 50264 for review
Julian Elischer
julian at FreeBSD.org
Sat Apr 3 08:11:34 PST 2004
http://perforce.freebsd.org/chv.cgi?CH=50264
Change 50264 by julian at 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);
More information about the p4-projects
mailing list