diff options
Diffstat (limited to 'kernel/include')
| -rw-r--r-- | kernel/include/process.h | 21 | ||||
| -rw-r--r-- | kernel/include/scheduler.h | 4 | ||||
| -rw-r--r-- | kernel/include/timer.h | 1 |
3 files changed, 25 insertions, 1 deletions
diff --git a/kernel/include/process.h b/kernel/include/process.h new file mode 100644 index 0000000..ff82924 --- /dev/null +++ b/kernel/include/process.h @@ -0,0 +1,21 @@ +#ifndef PROCESS_H +#define PROCESS_H + +#include <types.h> +#include <libk/list.h> + +void save_context_to_rsp(uint64_t irq_rsp, uint64_t task_rsp); +__attribute__((noreturn)) void restore_context_from_rsp(uint64_t task_rsp); + +struct process_t { + uint64_t rsp; + list_t list; +}; +typedef struct process_t process_t; + +extern process_t process_queue; +extern process_t *curr_process; + +__attribute__((noreturn)) void context_switch(uint64_t irq_rsp); + +#endif diff --git a/kernel/include/scheduler.h b/kernel/include/scheduler.h index 2f751f0..73a9d2b 100644 --- a/kernel/include/scheduler.h +++ b/kernel/include/scheduler.h @@ -1,6 +1,8 @@ #ifndef SCHEDULER_H #define SCHEDULER_H -void scheduler(void); +#include <process.h> + +process_t *scheduler(void); #endif diff --git a/kernel/include/timer.h b/kernel/include/timer.h index 899f09f..a86bfe7 100644 --- a/kernel/include/timer.h +++ b/kernel/include/timer.h @@ -4,6 +4,7 @@ #include <types.h> #define TICKS_PER_SECOND 1000 +#define CONTEXT_SWITCHES_PER_SECOND 20 void timer_handler(uint64_t rsp); void wait(uint64_t ms); |
