renamed and cleaned up export header files to match linux convention
[lunaix-os.git] / lunaix-os / includes / lunaix / timer.h
1 #ifndef __LUNAIX_TIMER_H
2 #define __LUNAIX_TIMER_H
3
4 #include <lunaix/ds/llist.h>
5 #include <lunaix/time.h>
6 #include <lunaix/hart_state.h>
7
8 #define SYS_TIMER_FREQUENCY_HZ 1000
9
10 #define TIMER_MODE_PERIODIC 0x1
11
12 struct lx_timer
13 {
14     struct llist_header link;
15     ticks_t deadline;
16     ticks_t counter;
17     void* payload;
18     void (*callback)(void*);
19     u8_t flags;
20 };
21
22 /**
23  * @brief Initialize the system timer that runs at specified frequency
24  *
25  * @param frequency The frequency that timer should run in Hz.
26  */
27 void
28 timer_init();
29
30 struct lx_timer*
31 timer_run_second(u32_t second,
32                  void (*callback)(void*),
33                  void* payload,
34                  u8_t flags);
35
36 struct lx_timer*
37 timer_run_ms(u32_t millisecond,
38              void (*callback)(void*),
39              void* payload,
40              u8_t flags);
41
42 struct lx_timer*
43 timer_run(ticks_t ticks, void (*callback)(void*), void* payload, u8_t flags);
44
45 #endif /* __LUNAIX_TIMER_H */