summaryrefslogtreecommitdiff
path: root/kernel/sched/scheduler.c
diff options
context:
space:
mode:
authorAnton Kling <anton@kling.gg>2023-11-28 20:07:50 +0100
committerAnton Kling <anton@kling.gg>2023-11-28 20:07:50 +0100
commit636858dbbd48ed9f5073793b46740302aa202f43 (patch)
treecf976c2b5a61ba055f0877317afdaf6e871df80e /kernel/sched/scheduler.c
parent89dc5dd5ba1e9cfe7a8975086c1d5638f8fbbac5 (diff)
Kernel: Add basic IPC and move to microkernel design.
The IPC design is currently a WIP and is nowhere near complete
Diffstat (limited to 'kernel/sched/scheduler.c')
-rw-r--r--kernel/sched/scheduler.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/kernel/sched/scheduler.c b/kernel/sched/scheduler.c
index 7d13277..ccc5956 100644
--- a/kernel/sched/scheduler.c
+++ b/kernel/sched/scheduler.c
@@ -17,7 +17,19 @@ u32 next_pid = 0;
extern u32 read_eip(void);
-process_t *get_current_task(void) { return current_task; }
+process_t *get_current_task(void) {
+ return current_task;
+}
+
+bool get_task_from_pid(u32 pid, process_t **out) {
+ for (process_t *tmp = ready_queue; tmp; tmp = tmp->next) {
+ if (tmp->pid == pid) {
+ *out = tmp;
+ return true;
+ }
+ }
+ return false;
+}
void set_signal_handler(int sig, void (*handler)(int)) {
if (sig >= 20 || sig < 0)