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