Proc refcnting wrappers
[akaros.git] / kern / src / schedule.c
index f49426e..fe68161 100644 (file)
@@ -33,7 +33,7 @@ void schedule_init(void)
 void schedule_proc(struct proc *p)
 {
        /* up the refcnt since we are storing the reference */
-       kref_get(&p->kref, 1);
+       proc_incref(p, 1);
        spin_lock_irqsave(&runnablelist_lock);
        printd("Scheduling PID: %d\n", p->pid);
        TAILQ_INSERT_TAIL(&proc_runnablelist, p, proc_link);
@@ -52,7 +52,7 @@ void deschedule_proc(struct proc *p)
        TAILQ_REMOVE(&proc_runnablelist, p, proc_link);
        spin_unlock_irqsave(&runnablelist_lock);
        /* down the refcnt, since its no longer stored */
-       kref_put(&p->kref);
+       proc_decref(p);
        return;
 }
 
@@ -73,15 +73,9 @@ void schedule(void)
                printd("PID of proc i'm running: %d\n", p->pid);
                /* proc_run will either eat the ref, or we'll decref manually. */
                proc_run(p);
-               kref_put(&p->kref);
+               proc_decref(p);
        } else {
                spin_unlock_irqsave(&runnablelist_lock);
-               /* while this is problematic, we really don't have anything to
-         * do and could run off the end of the kernel stack if we just
-         * smp_idle -> manager -> schedule -> smp_idle. */
-               printk("No processes to schedule, enjoy the Monitor!\n");
-               while (1)
-                       monitor(NULL);
        }
        return;
 }