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