diff options
author | Anton Kling <anton@kling.gg> | 2024-10-14 21:42:38 +0200 |
---|---|---|
committer | Anton Kling <anton@kling.gg> | 2024-10-14 21:42:38 +0200 |
commit | 87af93c7521be331a5794c6a53f31d13b3a24baa (patch) | |
tree | 7807e28e64b17bebd3a5ad4f980fbada3278e6df /kernel/sched | |
parent | a5b508d1fb751015ecb9b6701749dcdcd81e3071 (diff) |
kernel: stuff
Diffstat (limited to 'kernel/sched')
-rw-r--r-- | kernel/sched/scheduler.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/kernel/sched/scheduler.c b/kernel/sched/scheduler.c index 1285d26..9fec2b7 100644 --- a/kernel/sched/scheduler.c +++ b/kernel/sched/scheduler.c @@ -28,14 +28,6 @@ u32 next_pid = 0; extern u32 read_eip(void); -process_t *get_current_task(void) { - return current_task; -} - -process_t *get_ready_queue(void) { - return ready_queue; -} - void process_push_restore_context(process_t *p, reg_t r) { if (!p) { p = current_task; @@ -535,20 +527,27 @@ process_t *next_task(process_t *s) { void signal_process(process_t *p, int sig) { assert(sig < 32); - kprintf("sending signal to: %x\n", p); + int talking_to_itself = (p == current_task); if (!p->signal_handlers[sig]) { if (SIGTERM == sig) { kprintf("HAS NO SIGTERM\n"); exit_process(p, 1 /*TODO: what should the status be?*/); - ASSERT_NOT_REACHED; + if (talking_to_itself) { + ASSERT_NOT_REACHED; + } } else if (SIGSEGV == sig) { kprintf("HAS NO SIGSEGV\n"); exit_process(p, 1 /*TODO: what should the status be?*/); - ASSERT_NOT_REACHED; + if (talking_to_itself) { + ASSERT_NOT_REACHED; + } } else { // TODO: Should also exit proess(I think) - ASSERT_NOT_REACHED; + if (talking_to_itself) { + ASSERT_NOT_REACHED; + } } + return; } signal_t signal = {.handler_ip = (uintptr_t)p->signal_handlers[sig]}; process_push_signal(p, signal); |