cputime.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #ifndef CPUTIME_H
  2. #define CPUTIME_H
  3. #pragma once
  4. #include "config.h"
  5. #include <winpr/wtypes.h>
  6. #ifdef __cplusplus
  7. extern "C" {
  8. #endif
  9. // note: has bug currently!!! i will fix in future!!!
  10. typedef __int64 cputime_t;
  11. TOOLKIT_API cputime_t cputime_now();
  12. TOOLKIT_API cputime_t cputime_per_usec();
  13. TOOLKIT_API cputime_t cputime_per_msec();
  14. TOOLKIT_API cputime_t cputime_per_sec();
  15. TOOLKIT_API unsigned int cputime_usec(cputime_t tm);
  16. TOOLKIT_API unsigned int cputime_msec(cputime_t tm);
  17. TOOLKIT_API unsigned int cputime_sec(cputime_t tm);
  18. TOOLKIT_API unsigned int cputime_as_usec(cputime_t tm);
  19. TOOLKIT_API unsigned int cputime_as_msec(cputime_t tm);
  20. TOOLKIT_API unsigned int cputime_as_sec(cputime_t tm);
  21. TOOLKIT_API cputime_t cputime_advance_msec(cputime_t t, unsigned int val);
  22. TOOLKIT_API cputime_t cputime_advance_sec(cputime_t t, unsigned int val);
  23. TOOLKIT_API cputime_t cputime_advance_uec(cputime_t t, unsigned int val);
  24. typedef struct mmtime_t
  25. {
  26. LARGE_INTEGER last_tick;
  27. UINT resolution;
  28. }mmtime_t;
  29. TOOLKIT_API void mmtime_init(mmtime_t *inst, UINT resolution);
  30. TOOLKIT_API void mmtime_term(mmtime_t *inst);
  31. /* multimedia timer */
  32. typedef struct multimedia_timer multimedia_timer;
  33. /**
  34. * create multimedia timer object
  35. * @param the resolution of the timer , in milliseconds
  36. */
  37. TOOLKIT_API multimedia_timer *multimedia_timer_create(UINT resolution);
  38. /**
  39. * destroy multimedia timer object
  40. */
  41. TOOLKIT_API void multimedia_timer_destroy(multimedia_timer *timer);
  42. /**
  43. * get the actual resolution of the timer
  44. */
  45. TOOLKIT_API UINT multimedia_timer_actual_resolution(multimedia_timer *timer);
  46. /**
  47. * do sleep
  48. * @param delay in milliseconds
  49. */
  50. TOOLKIT_API int multimedia_timer_sleep(multimedia_timer *timer, unsigned int delay);
  51. /**
  52. * interrupt the sleep
  53. */
  54. TOOLKIT_API int multimedia_timer_abort(multimedia_timer *timer);
  55. /**
  56. * adaptive sleep initialization
  57. * @param interval_den use with interval_num, interval is (num / den), in second!!!
  58. * @param interval_num
  59. */
  60. TOOLKIT_API int multimedia_timer_adaptive_sleep_init(multimedia_timer *timer,
  61. int interval_den,
  62. int interval_num);
  63. /**
  64. * adaptive sleep
  65. */
  66. TOOLKIT_API int multimedia_timer_adaptive_sleep(multimedia_timer *timer);
  67. #ifdef __cplusplus
  68. } // extern "C" {
  69. #endif
  70. #endif // CPUTIME_H