From 4e7918753175dbd8fc38bc7c5b176517e1dbef2f Mon Sep 17 00:00:00 2001 From: Anton Kling Date: Wed, 3 Jul 2024 18:30:51 +0200 Subject: Kernel/Time: Improve time keeping This makes use of TSC and now provides a file system interface for userland programs to change the system time. --- kernel/sched/scheduler.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'kernel/sched') diff --git a/kernel/sched/scheduler.c b/kernel/sched/scheduler.c index c8ee0a1..10ecd73 100644 --- a/kernel/sched/scheduler.c +++ b/kernel/sched/scheduler.c @@ -7,7 +7,9 @@ #include #include #include +#include #include +#include // FIXME: Use the process_t struct instead or keep this contained in it. TCB *current_task_TCB; @@ -432,6 +434,7 @@ extern PageDirectory *active_directory; process_t *next_task(process_t *s) { process_t *c = s; + u64 ms_time = timer_get_ms(); c = c->next; for (;; c = c->next) { if (!c) { @@ -440,7 +443,7 @@ process_t *next_task(process_t *s) { if (s == c) { // wait_for_interrupt(); } - if (c->sleep_until > pit_num_ms()) { + if (c->sleep_until > ms_time) { continue; } if (c->is_interrupted) { -- cgit v1.2.3