Merge remote-tracking branch 'origin/master' into isa/arm64
[lunaix-os.git] / lunaix-os / kernel / time / timer.c
index b9d98afc8b79d7cb912f3f7092020e1e21a6ed32..12c8e7fea2d2a74e835dc4c76832cee6b7f2a481 100644 (file)
@@ -25,7 +25,7 @@ LOG_MODULE("TIMER");
 static void
 timer_update();
 
 static void
 timer_update();
 
-static volatile struct lx_timer_context* timer_ctx = NULL;
+static DEFINE_LLIST(timers);
 
 static volatile u32_t sched_ticks = 0;
 static volatile u32_t sched_ticks_counter = 0;
 
 static volatile u32_t sched_ticks = 0;
 static volatile u32_t sched_ticks_counter = 0;
@@ -36,13 +36,6 @@ void
 timer_init_context()
 {
     timer_pile = cake_new_pile("timer", sizeof(struct lx_timer), 1, 0);
 timer_init_context()
 {
     timer_pile = cake_new_pile("timer", sizeof(struct lx_timer), 1, 0);
-    timer_ctx =
-      (struct lx_timer_context*)valloc(sizeof(struct lx_timer_context));
-
-    assert_msg(timer_ctx, "Fail to initialize timer contex");
-
-    timer_ctx->active_timers = (struct lx_timer*)cake_grab(timer_pile);
-    llist_init_head(&timer_ctx->active_timers->link);
 }
 
 void
 }
 
 void
@@ -52,8 +45,6 @@ timer_init()
 
     hwtimer_init(SYS_TIMER_FREQUENCY_HZ, timer_update);
 
 
     hwtimer_init(SYS_TIMER_FREQUENCY_HZ, timer_update);
 
-    timer_ctx->base_frequency = hwtimer_base_frequency();
-
     sched_ticks = (SYS_TIMER_FREQUENCY_HZ * SCHED_TIME_SLICE) / 1000;
     sched_ticks_counter = 0;
 }
     sched_ticks = (SYS_TIMER_FREQUENCY_HZ * SCHED_TIME_SLICE) / 1000;
     sched_ticks_counter = 0;
 }
@@ -92,7 +83,7 @@ timer_run(ticks_t ticks, void (*callback)(void*), void* payload, u8_t flags)
     timer->payload = payload;
     timer->flags = flags;
 
     timer->payload = payload;
     timer->flags = flags;
 
-    llist_append(&timer_ctx->active_timers->link, &timer->link);
+    llist_append(&timers, &timer->link);
 
     return timer;
 }
 
     return timer;
 }
@@ -101,9 +92,8 @@ static void
 timer_update()
 {
     struct lx_timer *pos, *n;
 timer_update()
 {
     struct lx_timer *pos, *n;
-    struct lx_timer* timer_list_head = timer_ctx->active_timers;
 
 
-    llist_for_each(pos, n, &timer_list_head->link, link)
+    llist_for_each(pos, n, &timers, link)
     {
         if (--(pos->counter)) {
             continue;
     {
         if (--(pos->counter)) {
             continue;
@@ -127,9 +117,3 @@ timer_update()
         schedule();
     }
 }
         schedule();
     }
 }
-
-struct lx_timer_context*
-timer_context()
-{
-    return (struct lx_timer_context*)timer_ctx;
-}
\ No newline at end of file