platform_linux.c.bak 926 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #ifdef ZIVUOS_PLATFORM_LINUX
  2. #include <stdint.h>
  3. #include <stddef.h>
  4. #include <stdbool.h>
  5. #include <math.h>
  6. #include <time.h>
  7. #include "zivuos/zv_types.h"
  8. #include "zivuos/zv_time.h"
  9. void zv_platform_init(void) {
  10. }
  11. zv_time_t zv_platform_get_time(void) {
  12. struct timespec current_time;
  13. clock_gettime(CLOCK_REALTIME, &current_time);
  14. time_t seconds = current_time.tv_sec;
  15. long nanoseconds = current_time.tv_nsec;
  16. long miliseconds = round(nanoseconds / 1000000);
  17. if (miliseconds > 999) {
  18. miliseconds = 0;
  19. ++seconds;
  20. }
  21. zv_time_t result = seconds * 1000;
  22. result += miliseconds;
  23. return result;
  24. }
  25. zv_ticks_t zv_platform_get_ticks(void) {
  26. struct timespec current_time;
  27. clock_gettime(CLOCK_REALTIME, &current_time);
  28. return current_time.tv_nsec;
  29. }
  30. zv_ticks_t zv_platform_get_time_us(void) {
  31. return zv_platform_get_ticks() / 1000;
  32. }
  33. #endif