Introduce the new timer subsystem.
[people/mdeck/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 uint32_t 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 tick_t currticks(void);
15
16 void generic_currticks_udelay(unsigned int usecs);
17
18 struct timer {
19         /* Returns zero on successful initialisation. */
20         int (*init) (void);
21
22         /* Return the current time, int mictoseconds since the beginning. */
23         tick_t (*currticks) (void);
24
25         /* Sleep for a few useconds. */
26         void (*udelay) (unsigned int useconds);
27 };
28
29 #define __timer(order) __table (struct timer, timers, order)
30
31 #endif  /* GPXE_TIMER_H */
32