jack2 codebase
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.3KB

  1. #include "JackPosixCommon.h"
  2. #include "JackConstants.h"
  3. #include "JackTools.h"
  4. #include "JackError.h"
  5. #include <assert.h>
  6. #include <time.h>
  7. #include <string.h>
  8. #include <stdio.h>
  9. #include <unistd.h>
  10. namespace Jack
  11. {
  12. void JackPosixTools::TimespecAdd(const struct timespec *left,
  13. const struct timespec *right, struct timespec *result)
  14. {
  15. assert(result != NULL);
  16. result->tv_sec = left->tv_sec + right->tv_sec;
  17. result->tv_nsec = left->tv_nsec + right->tv_nsec;
  18. if (result->tv_nsec >= 1000000000) {
  19. result->tv_nsec -= 1000000000;
  20. result->tv_sec += 1;
  21. }
  22. }
  23. void JackPosixTools::TimespecSub(const struct timespec *left,
  24. const struct timespec *right, struct timespec *result)
  25. {
  26. assert(result != NULL);
  27. result->tv_sec = left->tv_sec - right->tv_sec;
  28. result->tv_nsec = left->tv_nsec - right->tv_nsec;
  29. if (result->tv_nsec < 0) {
  30. result->tv_nsec += 1000000000;
  31. result->tv_sec -= 1;
  32. }
  33. }
  34. int JackPosixTools::TimespecCmp(const struct timespec *left,
  35. const struct timespec *right)
  36. {
  37. if (left->tv_sec != right->tv_sec)
  38. return left->tv_sec < right->tv_sec ? -1 : 1;
  39. if (left->tv_nsec != right->tv_nsec)
  40. return left->tv_nsec < right->tv_nsec ? -1 : 1;
  41. return 0;
  42. }
  43. } // end of namespace