diff options
Diffstat (limited to 'kernel/include')
| -rw-r--r-- | kernel/include/process.h | 25 | ||||
| -rw-r--r-- | kernel/include/registers.h | 31 | ||||
| -rw-r--r-- | kernel/include/scheduler.h | 6 |
3 files changed, 60 insertions, 2 deletions
diff --git a/kernel/include/process.h b/kernel/include/process.h new file mode 100644 index 0000000..7e8f59d --- /dev/null +++ b/kernel/include/process.h @@ -0,0 +1,25 @@ +#ifndef PROCESS_H +#define PROCESS_H + +#include <registers.h> +#include <libk/list.h> + +#define STATUS_READY 0 +#define STATUS_RUNNING 1 +#define STATUS_WAITING 2 + +struct process_t { + registers_t registers; + list_t* next; + uint32_t status; + uint32_t pid; + uint32_t time_using_cpu; +}; +typedef struct process_t process_t; + +extern process_t process_list; +extern process_t current_process; + +void create_process(uint64_t rip, uint64_t param1, uint64_t param2); + +#endif diff --git a/kernel/include/registers.h b/kernel/include/registers.h index a0c0949..373e557 100644 --- a/kernel/include/registers.h +++ b/kernel/include/registers.h @@ -3,6 +3,32 @@ #include <types.h> +#define RAX 0x0 +#define RBX 0x8 +#define RCX 0x10 +#define RDX 0x18 +#define RSI 0x20 +#define RDI 0x28 +#define RSP 0x30 +#define RBP 0x38 +#define R8 0x40 +#define R9 0x48 +#define R10 0x50 +#define R11 0x58 +#define R12 0x60 +#define R13 0x68 +#define R14 0x70 +#define R15 0x78 +#define RIP 0x80 +#define RFLAGS 0x88 +#define CR3 0x90 +#define CS 0x98 +#define DS 0x9c +#define SS 0x100 +#define ES 0x104 +#define FS 0x108 +#define GS 0x10c + struct registers_t { uint64_t rax; uint64_t rbx; @@ -21,14 +47,15 @@ struct registers_t { uint64_t r14; uint64_t r15; uint64_t rip; + uint64_t rflags; + uint64_t cr3; uint16_t cs; uint16_t ds; uint16_t ss; uint16_t es; uint16_t fs; uint16_t gs; -}; +} __attribute__((packed, aligned(8))); typedef struct registers_t registers_t; - #endif diff --git a/kernel/include/scheduler.h b/kernel/include/scheduler.h new file mode 100644 index 0000000..2f751f0 --- /dev/null +++ b/kernel/include/scheduler.h @@ -0,0 +1,6 @@ +#ifndef SCHEDULER_H +#define SCHEDULER_H + +void scheduler(void); + +#endif |
