summaryrefslogtreecommitdiff
path: root/sys/os/os_sched.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/os/os_sched.c')
-rw-r--r--sys/os/os_sched.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/sys/os/os_sched.c b/sys/os/os_sched.c
index e0dfc98..7d3b485 100644
--- a/sys/os/os_sched.c
+++ b/sys/os/os_sched.c
@@ -64,3 +64,21 @@ sched_enqueue_proc(struct process *proc)
TAILQ_INSERT_TAIL(&core->pqueue, proc, link);
return core;
}
+
+struct process *
+sched_dequeue_proc(void)
+{
+ struct cpu_info *core;
+ struct process *proc;
+
+ core = cpu_self();
+ if (core == NULL) {
+ return NULL;
+ }
+
+ proc = TAILQ_FIRST(&core->pqueue);
+ if (proc != NULL) {
+ TAILQ_REMOVE(&core->pqueue, proc, link);
+ }
+ return proc;
+}