X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/290981180b9abc454e017271a8ebe75478c00e86..b91be0033265b5b6bd716bd39cb0971da41906c4:/lunaix-os/kernel/time/timer.c diff --git a/lunaix-os/kernel/time/timer.c b/lunaix-os/kernel/time/timer.c index bf99328..2aca8d5 100644 --- a/lunaix-os/kernel/time/timer.c +++ b/lunaix-os/kernel/time/timer.c @@ -9,7 +9,7 @@ * @copyright Copyright (c) 2022 * */ -#include +#include #include #include @@ -40,11 +40,11 @@ static volatile struct lx_timer_context* timer_ctx = NULL; // Don't optimize them! Took me an half hour to figure that out... -static volatile uint32_t rtc_counter = 0; -static volatile uint8_t apic_timer_done = 0; +static volatile u32_t rtc_counter = 0; +static volatile u8_t apic_timer_done = 0; -static volatile uint32_t sched_ticks = 0; -static volatile uint32_t sched_ticks_counter = 0; +static volatile u32_t sched_ticks = 0; +static volatile u32_t sched_ticks_counter = 0; static struct cake_pile* timer_pile; @@ -64,7 +64,7 @@ timer_init_context() } void -timer_init(uint32_t frequency) +timer_init(u32_t frequency) { timer_init_context(); @@ -79,8 +79,8 @@ timer_init(uint32_t frequency) // mapping config. // grab ourselves these irq numbers - uint32_t iv_rtc = isrm_bindirq(PC_AT_IRQ_RTC, temp_intr_routine_rtc_tick); - uint32_t iv_timer = isrm_ivexalloc(temp_intr_routine_apic_timer); + u32_t iv_rtc = isrm_bindirq(PC_AT_IRQ_RTC, temp_intr_routine_rtc_tick); + u32_t iv_timer = isrm_ivexalloc(temp_intr_routine_apic_timer); // Setup a one-shot timer, we will use this to measure the bus speed. So we // can then calibrate apic timer to work at *nearly* accurate hz @@ -133,7 +133,8 @@ timer_init(uint32_t frequency) assert_msg(timer_ctx->base_frequency, "Fail to initialize timer (NOFREQ)"); - kprintf(KINFO "Base frequency: %u Hz\n", timer_ctx->base_frequency); + kprintf( + KINFO "hw: %u Hz; os: %u Hz\n", timer_ctx->base_frequency, frequency); timer_ctx->running_frequency = frequency; timer_ctx->tphz = timer_ctx->base_frequency / frequency; @@ -153,20 +154,20 @@ timer_init(uint32_t frequency) } struct lx_timer* -timer_run_second(uint32_t second, +timer_run_second(u32_t second, void (*callback)(void*), void* payload, - uint8_t flags) + u8_t flags) { return timer_run( second * timer_ctx->running_frequency, callback, payload, flags); } struct lx_timer* -timer_run_ms(uint32_t millisecond, +timer_run_ms(u32_t millisecond, void (*callback)(void*), void* payload, - uint8_t flags) + u8_t flags) { return timer_run(timer_ctx->running_frequency / 1000 * millisecond, callback, @@ -175,7 +176,7 @@ timer_run_ms(uint32_t millisecond, } struct lx_timer* -timer_run(ticks_t ticks, void (*callback)(void*), void* payload, uint8_t flags) +timer_run(ticks_t ticks, void (*callback)(void*), void* payload, u8_t flags) { struct lx_timer* timer = (struct lx_timer*)cake_grab(timer_pile); @@ -246,5 +247,5 @@ temp_intr_routine_apic_timer(const isr_param* param) struct lx_timer_context* timer_context() { - return timer_ctx; + return (struct lx_timer_context*)timer_ctx; } \ No newline at end of file