git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Implement (half) simple semaphore & mutex lock, and ...
[lunaix-os.git]
/
lunaix-os
/
includes
/
lunaix
/
timer.h
diff --git
a/lunaix-os/includes/lunaix/timer.h
b/lunaix-os/includes/lunaix/timer.h
index 5c406967a150cb1c4950e606be24f96a6e781632..78976a579759501390b5a1d5bf52fa05e6c5d115 100644
(file)
--- a/
lunaix-os/includes/lunaix/timer.h
+++ b/
lunaix-os/includes/lunaix/timer.h
@@
-4,21
+4,35
@@
#include <lunaix/ds/llist.h>
#include <stdint.h>
#include <lunaix/ds/llist.h>
#include <stdint.h>
-#define SYS_TIMER_FREQUENCY_HZ 2048
UL
+#define SYS_TIMER_FREQUENCY_HZ 2048
#define TIMER_MODE_PERIODIC 0x1
#define TIMER_MODE_PERIODIC 0x1
+typedef uint32_t ticks_t;
+
struct lx_timer_context {
struct lx_timer *active_timers;
struct lx_timer_context {
struct lx_timer *active_timers;
- uint32_t base_frequency;
+ /**
+ * @brief APIC timer base frequency (ticks per seconds)
+ *
+ */
+ ticks_t base_frequency;
+ /**
+ * @brief Desired system running frequency
+ *
+ */
uint32_t running_frequency;
uint32_t running_frequency;
- uint32_t tick_interval;
+ /**
+ * @brief Ticks per hertz
+ *
+ */
+ ticks_t tphz;
};
struct lx_timer {
struct llist_header link;
};
struct lx_timer {
struct llist_header link;
-
uint32
_t deadline;
-
uint32
_t counter;
+
ticks
_t deadline;
+
ticks
_t counter;
void* payload;
void (*callback)(void*);
uint8_t flags;
void* payload;
void (*callback)(void*);
uint8_t flags;
@@
-35,8
+49,12
@@
timer_init(uint32_t frequency);
int
timer_run_second(uint32_t second, void (*callback)(void*), void* payload, uint8_t flags);
int
timer_run_second(uint32_t second, void (*callback)(void*), void* payload, uint8_t flags);
+timer_run_ms(uint32_t millisecond, void (*callback)(void*), void* payload, uint8_t flags);
int
int
-timer_run(uint32_t ticks, void (*callback)(void*), void* payload, uint8_t flags);
+timer_run(ticks_t ticks, void (*callback)(void*), void* payload, uint8_t flags);
+
+struct lx_timer_context*
+timer_context();
#endif /* __LUNAIX_TIMER_H */
#endif /* __LUNAIX_TIMER_H */