refactor: striped more arch-related code from the kernel code base
[lunaix-os.git] / lunaix-os / kernel / time / timer.c
index bf99328b8a41dbbb94a7aa9e2972181acd658d72..61f6d410cca59d4f232a571907454f7fba231c25 100644 (file)
@@ -9,7 +9,7 @@
  * @copyright Copyright (c) 2022
  *
  */
-#include <arch/x86/interrupts.h>
+#include <sys/interrupts.h>
 #include <hal/apic.h>
 #include <hal/rtc.h>
 
@@ -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