socsvn commit: r224947 - soc2011/rudot/kern

rudot at FreeBSD.org rudot at FreeBSD.org
Mon Aug 8 12:00:29 UTC 2011


Author: rudot
Date: Mon Aug  8 12:00:27 2011
New Revision: 224947
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=224947

Log:
  cpuset functionality added

Modified:
  soc2011/rudot/kern/sched_fbfs.c

Modified: soc2011/rudot/kern/sched_fbfs.c
==============================================================================
--- soc2011/rudot/kern/sched_fbfs.c	Mon Aug  8 11:33:07 2011	(r224946)
+++ soc2011/rudot/kern/sched_fbfs.c	Mon Aug  8 12:00:27 2011	(r224947)
@@ -282,7 +282,6 @@
 void
 sched_exit(struct proc *p, struct thread *td)
 {
-
 	KTR_STATE1(KTR_SCHED, "thread", sched_tdname(td), "proc exit",
 	    "prio:%d", td->td_priority);
 
@@ -293,7 +292,6 @@
 void
 sched_exit_thread(struct thread *td, struct thread *child)
 {
-
 	KTR_STATE1(KTR_SCHED, "thread", sched_tdname(child), "exit",
 	    "prio:%d", child->td_priority);
 	mtx_lock_spin(&sched_lock);
@@ -820,14 +818,22 @@
 	struct thread *td_min;
 	struct td_sched *ts;
 	int deadline_min;
+	int c;
 	
-	td = td_min = TAILQ_FIRST(rqh);
+	td_min = NULL;
+	deadline_min = 0;
+	td = TAILQ_FIRST(rqh);
 	MPASS(td != NULL);
-	MPASS(td_min != NULL);
-	deadline_min = td_min->td_sched->ts_vdeadline;
-
-	td = TAILQ_NEXT(td, td_runq);
 	while (td != NULL) {
+		c = PCPU_GET(cpuid);
+		if (!THREAD_CAN_SCHED(td, c)) {
+			td = TAILQ_NEXT(td, td_runq);
+			continue;
+		}
+		if (td_min == NULL) {
+			td_min = td;
+			deadline_min = td->td_sched->ts_vdeadline;
+		}
 		ts = td->td_sched;
 		if (ts->ts_vdeadline < deadline_min) {
 			deadline_min = ts->ts_vdeadline;
@@ -835,8 +841,6 @@
 		}
 		td = TAILQ_NEXT(td, td_runq);
 	}
-
-	MPASS(td_min != NULL);
 	return (td_min);
 }
 
@@ -856,7 +860,6 @@
 		pri = RQB_FFS(rqb->rqb_bits[i]) + (i << RQB_L2BPW);
 		if ((pri == RQ_TIMESHARE) || (pri == RQ_IDLE)) {
 			td = edf_choose(&rq->rq_queues[pri]);
-			KASSERT(td != NULL, "runq_choose_bfs: no thread on busy queue");
 			return (td);
 		}
 		rqh = &rq->rq_queues[pri];


More information about the svn-soc-all mailing list