summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-11-19 22:56:12 -0500
committerIan Moffett <ian@osmora.org>2025-11-19 22:56:12 -0500
commit7ea67beff9fdf4b57381b5c197f1f8c362bb9099 (patch)
treeb94fc7359f3a2caa142e22d75c2b14bf1b0dfff3 /sys
parent5a3204039b6033d15ca8812cfc7e9d523c9da2bb (diff)
kern: sched: Add function to dequeue processes
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'sys')
-rw-r--r--sys/inc/os/sched.h5
-rw-r--r--sys/os/os_sched.c18
2 files changed, 23 insertions, 0 deletions
diff --git a/sys/inc/os/sched.h b/sys/inc/os/sched.h
index 1caf1d6..948c95b 100644
--- a/sys/inc/os/sched.h
+++ b/sys/inc/os/sched.h
@@ -42,4 +42,9 @@
*/
struct cpu_info *sched_enqueue_proc(struct process *proc);
+/*
+ * Dequeue a process from the current core
+ */
+struct process *sched_dequeue_proc(void);
+
#endif /* !_OS_SCHED_H_ */
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;
+}