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