From 3922adcdec5bd003b4106ffce79c28553bc40c15 Mon Sep 17 00:00:00 2001 From: Anton Kling Date: Wed, 14 Feb 2024 17:40:06 +0100 Subject: Kernel: Update signal handling and IPC --- kernel/sched/scheduler.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'kernel/sched/scheduler.h') 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 #include #include +#include #include #include #include @@ -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; -- cgit v1.2.3