[efi] Add EFI image format and basic runtime environment
[people/sha0/gpxe.git] / src / include / gpxe / timer.h
1 #ifndef _GPXE_TIMER_H
2 #define _GPXE_TIMER_H
3
4 /** @file
5  *
6  * gPXE timer API
7  *
8  * The timer API provides udelay() for fixed delays, and currticks()
9  * for a monotonically increasing tick counter.
10  */
11
12 #include <gpxe/api.h>
13 #include <config/timer.h>
14
15 /**
16  * Calculate static inline timer API function name
17  *
18  * @v _prefix           Subsystem prefix
19  * @v _api_func         API function
20  * @ret _subsys_func    Subsystem API function
21  */
22 #define TIMER_INLINE( _subsys, _api_func ) \
23         SINGLE_API_INLINE ( TIMER_PREFIX_ ## _subsys, _api_func )
24
25 /**
26  * Provide a timer API implementation
27  *
28  * @v _prefix           Subsystem prefix
29  * @v _api_func         API function
30  * @v _func             Implementing function
31  */
32 #define PROVIDE_TIMER( _subsys, _api_func, _func ) \
33         PROVIDE_SINGLE_API ( TIMER_PREFIX_ ## _subsys, _api_func, _func )
34
35 /**
36  * Provide a static inline timer API implementation
37  *
38  * @v _prefix           Subsystem prefix
39  * @v _api_func         API function
40  */
41 #define PROVIDE_TIMER_INLINE( _subsys, _api_func ) \
42         PROVIDE_SINGLE_API_INLINE ( TIMER_PREFIX_ ## _subsys, _api_func )
43
44 /* Include all architecture-independent I/O API headers */
45 #include <gpxe/efi/efi_timer.h>
46
47 /* Include all architecture-dependent I/O API headers */
48 #include <bits/timer.h>
49
50 /**
51  * Delay for a fixed number of microseconds
52  *
53  * @v usecs             Number of microseconds for which to delay
54  */
55 void udelay ( unsigned long usecs );
56
57 /**
58  * Get current system time in ticks
59  *
60  * @ret ticks           Current time, in ticks
61  */
62 unsigned long currticks ( void );
63
64 /**
65  * Get number of ticks per second
66  *
67  * @ret ticks_per_sec   Number of ticks per second
68  */
69 unsigned long ticks_per_sec ( void );
70
71 /** Number of ticks per second */
72 #define TICKS_PER_SEC ( ticks_per_sec() )
73
74 #endif /* _GPXE_TIMER_H */