Skip site navigation (1)Skip section navigation (2)
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>