From 98e15f73f090c32b5197ecec0845c408d4a54608 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Wed, 2 Jun 2021 22:27:59 +0200 Subject: Huge scheduler rewrite and other things --- kernel/drivers/timer.c | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) (limited to 'kernel/drivers/timer.c') diff --git a/kernel/drivers/timer.c b/kernel/drivers/timer.c index 3ddc229..44d66f3 100644 --- a/kernel/drivers/timer.c +++ b/kernel/drivers/timer.c @@ -2,7 +2,7 @@ #include #include -#include +#include #include #include #include @@ -10,7 +10,6 @@ #include static u32 timer_ticks = 0; -PROTECTED static u8 call_scheduler = 0; CLEAR static void timer_phase(int hz) { @@ -25,36 +24,20 @@ u32 timer_get(void) return timer_ticks; } -void timer_handler(struct regs *r) +static void timer_handler(void) { if (timer_ticks >= U32_MAX) timer_ticks = 0; else timer_ticks++; - - if (call_scheduler) - scheduler(r); } // "Delay" function with CPU sleep void timer_wait(u32 ticks) { u32 eticks = timer_ticks + ticks; - while (timer_ticks < eticks) { + while (timer_ticks < eticks) __asm__ volatile("sti\nhlt\ncli"); - } -} - -CLEAR void scheduler_enable(void) -{ - call_scheduler = 1; - irq_install_handler(0, timer_handler); -} - -CLEAR void scheduler_disable(void) -{ - call_scheduler = 0; - irq_install_handler(0, timer_handler); } static struct timer timer_struct(void) @@ -85,7 +68,7 @@ CLEAR void timer_install(void) /* hpet_install(10000); // TODO: Find optimal femtosecond period */ /* if (!hpet) */ timer_phase(1000); - irq_install_handler(0, timer_handler); + int_event_handler_add(0, timer_handler); struct io_dev *dev = zalloc(sizeof(*dev)); dev->read = timer_read; -- cgit v1.2.3