From ecf1e4c6c6efc3edeb006ff120ac60a191ddce50 Mon Sep 17 00:00:00 2001 From: Anton Kling Date: Mon, 30 Oct 2023 20:46:36 +0100 Subject: Kernel/LibC: Add signals and support for custom signal handlers to processes. --- sched/scheduler.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'sched/scheduler.h') diff --git a/sched/scheduler.h b/sched/scheduler.h index 7df7c40..fc92ff3 100644 --- a/sched/scheduler.h +++ b/sched/scheduler.h @@ -4,6 +4,7 @@ #include #include #include +#include #define MAX_PATH 256 #define KEYBOARD_HALT 0 @@ -19,6 +20,8 @@ void *mmap(void *addr, size_t length, int prot, int flags, int fd, size_t offset); int munmap(void *addr, size_t length); int msync(void *addr, size_t length, int flags); +int kill(pid_t pid, int sig); +void set_signal_handler(int sig, void (*handler)(int)); typedef struct { void *u_address; @@ -34,25 +37,26 @@ struct Process { char program_name[100]; char current_working_directory[MAX_PATH]; uint32_t eip, esp, ebp; + uint8_t incoming_signal; + uint32_t signal_handler_stack; + void *signal_handlers[20]; PageDirectory *cr3; vfs_fd_t *file_descriptors[100]; vfs_inode_t *read_halt_inode[100]; vfs_inode_t *write_halt_inode[100]; vfs_inode_t *disconnect_halt_inode[100]; - // struct vfs_fd_t ** file_descriptors; uint32_t halts[2]; struct Halt *halt_list; void *data_segment_end; - // uint32_t *halts; process_t *next; process_t *parent; + // TODO: Create a linkedlist of childs so that the parent process + // can do stuff such as reap zombies and get status. process_t *child; MemoryMap *maps[100]; uint32_t sleep_until; int child_rc; int dead; - // FIXME: Create a linkedlisti of childs so that the parent process - // can do stuff such as reap zombies and get status. }; process_t *get_current_task(void); -- cgit v1.2.3