1 #ifndef __LUNAIX_TIMER_H
2 #define __LUNAIX_TIMER_H
4 #include <lunaix/ds/llist.h>
7 #define SYS_TIMER_FREQUENCY_HZ 2048
9 #define TIMER_MODE_PERIODIC 0x1
11 typedef uint32_t ticks_t;
13 struct lx_timer_context {
14 struct lx_timer *active_timers;
16 * @brief APIC timer base frequency (ticks per seconds)
19 ticks_t base_frequency;
21 * @brief Desired system running frequency
24 uint32_t running_frequency;
26 * @brief Ticks per second relative to desired system running frequency
33 struct llist_header link;
37 void (*callback)(void*);
43 * @brief Initialize the system timer that runs at specified frequency
45 * @param frequency The frequency that timer should run in Hz.
48 timer_init(uint32_t frequency);
51 timer_run_second(uint32_t second, void (*callback)(void*), void* payload, uint8_t flags);
52 timer_run_ms(uint32_t millisecond, void (*callback)(void*), void* payload, uint8_t flags);
55 timer_run(ticks_t ticks, void (*callback)(void*), void* payload, uint8_t flags);
57 struct lx_timer_context*
60 #endif /* __LUNAIX_TIMER_H */