efa72d8f2d995ce16f2c286648332281f43929dd
[lunaix-os.git] / lunaix-os / includes / hal / hwtimer.h
1 #ifndef __LUNAIX_HWTIMER_H
2 #define __LUNAIX_HWTIMER_H
3
4 #include <lunaix/time.h>
5 #include <lunaix/types.h>
6
7 typedef void (*timer_tick_cb)();
8
9 struct hwtimer_context
10 {
11     char* name;
12     void* data;
13
14     int (*supported)(struct hwtimer_context*);
15     void (*init)(struct hwtimer_context*, u32_t hertz, timer_tick_cb);
16     ticks_t (*systicks)();
17     ticks_t base_freq;
18     ticks_t running_freq;
19 };
20
21 void
22 hwtimer_init(u32_t hertz, void* tick_callback);
23
24 struct hwtimer_context*
25 hwtimer_choose();
26
27 ticks_t
28 hwtimer_base_frequency();
29
30 ticks_t
31 hwtimer_current_systicks();
32
33 ticks_t
34 hwtimer_to_ticks(u32_t value, int unit);
35
36 #endif /* __LUNAIX_HWTIMER_H */