misc.c
Raw
1#include <cutils/misc.h>
2
3void sleep_ms(unsigned int milliseconds)
4{
5 #ifdef __unix__
6 usleep(milliseconds * 1000);
7 #endif
8 #ifdef _WIN32
9 Sleep(milliseconds);
10 #endif
11}
12
13#if __STDC_VERSION__ >= 201112L
14
15bool timespec_bigger(const struct timespec* ts1, const struct timespec* ts2)
16{
17 if(ts1->tv_sec > ts2->tv_sec)
18 {
19 return true;
20 } else if(ts1->tv_sec < ts2->tv_sec) {
21 return false;
22 } else {
23 if(ts1->tv_nsec > ts2->tv_nsec)
24 {
25 return true;
26 } else if(ts1->tv_nsec < ts2->tv_nsec) {
27 return false;
28 } else {
29 return false;
30 }
31 }
32}
33
34bool timespec_equal(const struct timespec* ts1, const struct timespec* ts2)
35{
36 if(ts1->tv_sec == ts2->tv_sec && ts1->tv_nsec == ts2->tv_nsec)
37 {
38 return true;
39 } else {
40 return false;
41 }
42}
43
44bool timespec_smaller(const struct timespec* ts1, const struct timespec* ts2)
45{
46 if(timespec_equal(ts1, ts2))
47 {
48 return false;
49 } else if(timespec_bigger(ts1, ts2)) {
50 return false;
51 } else {
52 return true;
53 }
54}
55
56struct timespec timespec_diff(const struct timespec* ts1, const struct timespec* ts2)
57{
58 struct timespec result;
59
60 if((ts1->tv_sec < ts2->tv_sec) ||
61 ((ts1->tv_sec == ts2->tv_sec) &&
62 (ts1->tv_nsec <= ts2->tv_nsec)))
63 {
64 result.tv_sec = result.tv_nsec = 0 ;
65 } else {
66 result.tv_sec = ts1->tv_sec - ts2->tv_sec ;
67 if (ts1->tv_nsec < ts2->tv_nsec) {
68 result.tv_nsec = ts1->tv_nsec + 1000000000L - ts2->tv_nsec ;
69 result.tv_sec-- ;
70 } else {
71 result.tv_nsec = ts1->tv_nsec - ts2->tv_nsec ;
72 }
73 }
74
75 return result;
76
77}
78
79struct timespec timespec_add(const struct timespec* ts_1, const struct timespec* ts_2)
80{
81 struct timespec res;
82
83 if (999999999 - ts_1->tv_nsec < ts_2->tv_nsec)
84 {
85 res.tv_sec = ts_1->tv_sec + ts_2->tv_sec + 1;
86 res.tv_nsec = ts_1->tv_nsec + (ts_2->tv_nsec - 1000000000) ;
87 } else {
88 res.tv_sec = ts_1->tv_sec + ts_2->tv_sec;
89 res.tv_nsec = ts_1->tv_nsec + ts_2->tv_nsec;
90 }
91
92 return res;
93}
94
95#endif
96