From owner-svn-soc-all@FreeBSD.ORG Mon Aug 8 12:00:29 2011 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from socsvn.FreeBSD.org (unknown [IPv6:2001:4f8:fff6::2f]) by hub.freebsd.org (Postfix) with SMTP id 0E28810656B5 for ; Mon, 8 Aug 2011 12:00:27 +0000 (UTC) (envelope-from rudot@FreeBSD.org) Received: by socsvn.FreeBSD.org (sSMTP sendmail emulation); Mon, 08 Aug 2011 12:00:27 +0000 Date: Mon, 08 Aug 2011 12:00:27 +0000 From: rudot@FreeBSD.org To: svn-soc-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Message-Id: <20110808120028.0E28810656B5@hub.freebsd.org> Cc: Subject: socsvn commit: r224947 - soc2011/rudot/kern X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Aug 2011 12:00:29 -0000 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];