schedule() only hands out to _S if it's an LL core
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 2 Mar 2012 21:04:12 +0000 (13:04 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 2 Mar 2012 21:04:12 +0000 (13:04 -0800)
Not that schedule() is called on CG cores, but it might in the future.
Also, CG vs LL is going to be a ksched controlled thing (for the most
part).

kern/src/schedule.c

index dea6535..2b07de7 100644 (file)
@@ -15,6 +15,7 @@
 #include <assert.h>
 #include <atomic.h>
 #include <smp.h>
+#include <manager.h>
 #include <sys/queue.h>
 
 /* Process Lists */
@@ -147,7 +148,7 @@ void schedule(void)
                        proc_decref(p);
                } else {
                        /* check our core to see if we can give it out to an SCP */
-                       if (!pcpui->owning_proc) {
+                       if (management_core() && (!pcpui->owning_proc)) {
                                TAILQ_REMOVE(&runnable_scps, p, proc_link);
                                printd("PID of the SCP i'm running: %d\n", p->pid);
                                proc_run_s(p);  /* gives it core we're running on */