Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

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