summaryrefslogtreecommitdiff
path: root/kernel/sched/scheduler.h
diff options
context:
space:
mode:
authorAnton Kling <anton@kling.gg>2024-02-14 17:40:06 +0100
committerAnton Kling <anton@kling.gg>2024-02-14 17:40:06 +0100
commit3922adcdec5bd003b4106ffce79c28553bc40c15 (patch)
treef1af360cd7ad75d4b5f19bf066bf7e29ce8e3e53 /kernel/sched/scheduler.h
parenta8ffc46136eb16adc87fb520c724467d1295a854 (diff)
Kernel: Update signal handling and IPC
Diffstat (limited to 'kernel/sched/scheduler.h')
-rw-r--r--kernel/sched/scheduler.h17
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;