Process management via active messages
[akaros.git] / kern / src / manager.c
index 7f88665..8df76cc 100644 (file)
@@ -4,6 +4,10 @@
  * See LICENSE for details.
  */
 
+#ifdef __SHARC__
+#pragma nosharc
+#endif
+
 #include <arch/types.h>
 #include <smp.h>
 
@@ -16,6 +20,7 @@
 #include <testing.h>
 #include <kfs.h>
 #include <stdio.h>
+#include <timing.h>
 
 /*
  * Currently, if you leave this function by way of proc_run (process_workqueue
 void manager(void)
 {
        static uint8_t progress = 0;
-       env_t *envs[256];
+       struct proc *envs[256];
+
+struct proc *p = kfs_proc_create(kfs_lookup_path("roslib_mhello"));
+// being proper and all:
+proc_set_state(p, PROC_RUNNABLE_S);
+proc_set_state(p, PROC_RUNNING_S);
+proc_set_state(p, PROC_RUNNABLE_M);
+// set vcoremap with dispatch plan.  usually done by schedule()
+spin_lock_irqsave(&p->proc_lock);
+p->num_vcores = 5;
+for (int i = 0; i < 5; i++)
+       p->vcoremap[i] = i + 1; // vcore0 -> pcore1, etc, for 3 cores
+spin_unlock_irqsave(&p->proc_lock);
+proc_run(p);
+udelay(5000000);
+printk("Killing p\n");
+proc_destroy(p);
+printk("Killed p\n");
+udelay(5000000);
+panic("This is okay");
 
        switch (progress++) {
                case 0:
@@ -117,4 +141,3 @@ void manager(void)
        */
        return;
 }
-