Fixed proc_init breaking with only one core
authorAndrew Waterman <waterman@ros-dev.(none)>
Sun, 4 Apr 2010 00:18:46 +0000 (17:18 -0700)
committerKevin Klues <klueska@cs.berkeley.edu>
Thu, 3 Nov 2011 00:35:39 +0000 (17:35 -0700)
Now, core 1 is put on the idle core map if networking
support is disabled.  If networking support is enabled,
check to make sure we have at least 2 cores.

kern/src/process.c

index 53c73ff..c085e2b 100644 (file)
@@ -185,9 +185,15 @@ void proc_init(void)
        /* Init idle cores. Core 0 is the management core, and core 1 is
      * dedicated to the NIC currently */
        spin_lock(&idle_lock);
-       num_idlecores = num_cpus - 2;
+       #ifdef __CONFIG_NETWORKING__
+       assert(num_cpus >= 2);
+       int reserved_cores = 2;
+       #else
+       int reserved_cores = 1;
+       #endif
+       num_idlecores = num_cpus - reserved_cores;
        for (int i = 0; i < num_idlecores; i++)
-               idlecoremap[i] = i + 2;
+               idlecoremap[i] = i + reserved_cores;
        spin_unlock(&idle_lock);
        atomic_init(&num_envs, 0);
 }