diff options
author | Anton Kling <anton@kling.gg> | 2024-02-14 17:40:06 +0100 |
---|---|---|
committer | Anton Kling <anton@kling.gg> | 2024-02-14 17:40:06 +0100 |
commit | 3922adcdec5bd003b4106ffce79c28553bc40c15 (patch) | |
tree | f1af360cd7ad75d4b5f19bf066bf7e29ce8e3e53 /kernel/sched/scheduler.h | |
parent | a8ffc46136eb16adc87fb520c724467d1295a854 (diff) |
Kernel: Update signal handling and IPC
Diffstat (limited to 'kernel/sched/scheduler.h')
-rw-r--r-- | kernel/sched/scheduler.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/kernel/sched/scheduler.h b/kernel/sched/scheduler.h index 01276dc..f73d8ef 100644 --- a/kernel/sched/scheduler.h +++ b/kernel/sched/scheduler.h @@ -4,6 +4,7 @@ #include <fs/vfs.h> #include <halts.h> #include <ipc.h> +#include <lib/stack.h> #include <mmu.h> #include <signal.h> #include <stdbool.h> @@ -32,6 +33,10 @@ typedef struct { int fd; } MemoryMap; +typedef struct { + uintptr_t handler_ip; +} signal_t; + typedef struct Process process_t; typedef struct TCB { @@ -40,6 +45,11 @@ typedef struct TCB { uint32_t ESP0; } __attribute__((packed)) TCB; +void process_push_restore_context(process_t *p, reg_t r); +void process_pop_restore_context(process_t *p, reg_t *out_r); +void process_push_signal(process_t *p, signal_t s); +const signal_t *process_pop_signal(process_t *p); + struct Process { u32 pid; char program_name[100]; @@ -57,6 +67,13 @@ struct Process { vfs_inode_t *read_halt_inode[100]; vfs_inode_t *write_halt_inode[100]; vfs_inode_t *disconnect_halt_inode[100]; + + // // FIXME: Make this a array or circular buffer + // reg_t restore_context; + struct stack restore_context_stack; + + signal_t *active_signals[100]; + u32 halts[2]; struct Halt *halt_list; void *data_segment_end; |