summaryrefslogtreecommitdiff
path: root/kernel/include
diff options
context:
space:
mode:
authorAleksa Vuckovic <aleksa@vuckovic.cc>2023-02-26 13:22:31 +0100
committerAleksa Vuckovic <aleksa@vuckovic.cc>2023-02-26 13:22:31 +0100
commita164ca67174ba6179170dea573479f23122513cc (patch)
tree88bd5afa1633449e0db867cb480b9d772c96c1f6 /kernel/include
parent950649760927a7c33ddecd1944fd0ad20e731ee9 (diff)
process.c
Diffstat (limited to 'kernel/include')
-rw-r--r--kernel/include/process.h21
-rw-r--r--kernel/include/scheduler.h4
-rw-r--r--kernel/include/timer.h1
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);