platform_linux.c 615 B

123456789101112131415161718192021222324252627282930313233
  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 "zv_types.h"
  8. #include "zv_time.h"
  9. zv_time_t zv_platform_get_time() {
  10. struct timespec current_time;
  11. clock_gettime(CLOCK_REALTIME, &current_time);
  12. time_t seconds = current_time.tv_sec;
  13. long nanoseconds = current_time.tv_nsec;
  14. long miliseconds = round(nanoseconds / 1000000);
  15. if (miliseconds > 999) {
  16. miliseconds = 0;
  17. ++seconds;
  18. }
  19. zv_time_t result = seconds * 1000;
  20. result += miliseconds;
  21. return result;
  22. }
  23. #endif