]> rtime.felk.cvut.cz Git - lincan.git/blob - embedded/arch/generic/defines/lt_timer.h
Merge master into can-usb1 branch to include proc update for 3.12+ kernels.
[lincan.git] / embedded / arch / generic / defines / lt_timer.h
1 #ifndef _LT_TIMER_H
2 #define _LT_TIMER_H
3
4 #include <types.h>
5 #include <lt_timer_types.h>
6
7 #include <cpu_def.h>
8 #include <system_def.h>
9
10 //timers
11
12 #ifndef LT_TIMER_VAR_LOC
13 #define LT_TIMER_VAR_LOC
14 #endif
15
16 static lt_ticks_t LT_TIMER_VAR_LOC last_ticks;
17 static lt_mstime_t LT_TIMER_VAR_LOC actual_msec; 
18
19 /* Declaration of ulan light timers */
20
21 #define lt_get_msbase()     (1000/SYS_TIMER_HZ)         /* in ms */
22 #define lt_get_ticks()      (get_sys_timer_ticks())
23
24 static inline void
25 lt_mstime_update()
26 {
27   lt_ticks_t LT_TIMER_VAR_LOC act_ticks;
28   lt_mstime_t LT_TIMER_VAR_LOC msec_diff;
29
30   act_ticks=lt_get_ticks();
31   msec_diff=((lt_tidiff_t)(act_ticks-last_ticks))*lt_get_msbase();
32   last_ticks=act_ticks;
33
34   actual_msec+=msec_diff;
35 }
36
37
38 #define LT_TIMER_DEC(cust_prefix) \
39 \
40 extern lt_mstime_t LT_TIMER_VAR_LOC cust_prefix##_last_expired; \
41 static inline void \
42 cust_prefix##_init() \
43 {\
44   lt_mstime_update();\
45   cust_prefix##_last_expired=actual_msec;\
46 }\
47 static inline int \
48 cust_prefix##_expired(lt_mstime_t expiration) \
49 {\
50   lt_mstime_update();\
51   \
52   if ((lt_msdiff_t)(actual_msec-cust_prefix##_last_expired)>=expiration) {\
53     cust_prefix##_last_expired=actual_msec;\
54     return 1;\
55   }\
56   \
57   return 0;\
58 }
59
60 #define LT_TIMER_IMP(cust_prefix) \
61 \
62 lt_mstime_t LT_TIMER_VAR_LOC cust_prefix##_last_expired; \
63
64
65 #endif /* _LT_TIMER_H */