cputime.h 2.2 KB

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