ecd300015d97f5da6ca91ab469980e3e9102cd63
[people/balajirrao/gpxe.git] / src / include / gpxe / timer.h
1 #ifndef GPXE_TIMER_H
2 #define GPXE_TIMER_H
3
4 #include <stddef.h>
5
6 typedef unsigned long tick_t;
7
8 #define MSECS_IN_SEC (1000)
9 #define USECS_IN_SEC (1000*1000)
10 #define USECS_IN_MSEC (1000)
11
12 #define TICKS_PER_SEC   USECS_IN_SEC
13
14 extern tick_t currticks ( void );
15
16 extern void generic_currticks_udelay ( unsigned int usecs );
17
18 /** A timer */
19 struct timer {
20         /** Initialise timer
21          *
22          * @ret rc      Return status code
23          */
24         int ( * init ) ( void );
25         /** Read current time
26          *
27          * @ret ticks   Current time, in ticks
28          */
29         tick_t ( * currticks ) ( void );
30         /** Delay
31          *
32          * @v usecs     Time to delay, in microseconds
33          */
34         void ( * udelay ) ( unsigned int usecs );
35 };
36
37 #define __timer( order ) __table ( struct timer, timers, order )
38
39 #endif  /* GPXE_TIMER_H */
40