[timer] Formalise the timer API
[people/asdlkf/gpxe.git] / src / arch / i386 / include / gpxe / bios_timer.h
1 #ifndef _GPXE_BIOS_TIMER_H
2 #define _GPXE_BIOS_TIMER_H
3
4 /** @file
5  *
6  * BIOS timer
7  *
8  */
9
10 #ifdef TIMER_PCBIOS
11 #define TIMER_PREFIX_pcbios
12 #else
13 #define TIMER_PREFIX_pcbios __pcbios_
14 #endif
15
16 #include <gpxe/timer2.h>
17
18 /**
19  * Delay for a fixed number of microseconds
20  *
21  * @v usecs             Number of microseconds for which to delay
22  */
23 static inline __always_inline void
24 TIMER_INLINE ( pcbios, udelay ) ( unsigned long usecs ) {
25         /* BIOS timer is not high-resolution enough for udelay(), so
26          * we use timer2
27          */
28         timer2_udelay ( usecs );
29 }
30
31 /**
32  * Get number of ticks per second
33  *
34  * @ret ticks_per_sec   Number of ticks per second
35  */
36 static inline __always_inline unsigned long
37 TIMER_INLINE ( pcbios, ticks_per_sec ) ( void ) {
38         /* BIOS timer ticks over at 18.2 ticks per second */
39         return 18;
40 }
41
42 #endif /* _GPXE_BIOS_TIMER_H */