|
@@ -0,0 +1,38 @@
|
|
1
|
+#include <sys/time.h>
|
|
2
|
+#include <string.h>
|
|
3
|
+#include <errno.h>
|
|
4
|
+
|
|
5
|
+int xstrcmp(char *a, char *b) {
|
|
6
|
+ if (!a && b) return 1;
|
|
7
|
+ if (!b && a) return 1;
|
|
8
|
+ if (a == b) return 0;
|
|
9
|
+ return strcmp(a, b);
|
|
10
|
+}
|
|
11
|
+
|
|
12
|
+unsigned long long timediff_nsec(struct timespec *start_ts, struct timespec *end_ts) {
|
|
13
|
+ unsigned long long nsec;
|
|
14
|
+ nsec = (end_ts->tv_sec - start_ts->tv_sec) * 1000000000;
|
|
15
|
+ nsec += (end_ts->tv_nsec - start_ts->tv_nsec);
|
|
16
|
+ return nsec;
|
|
17
|
+}
|
|
18
|
+
|
|
19
|
+unsigned long long timeval_diff_usec(struct timeval *start_ts, struct timeval *end_ts) {
|
|
20
|
+ unsigned long long usec;
|
|
21
|
+ usec = (end_ts->tv_sec - start_ts->tv_sec) * 1000000;
|
|
22
|
+ usec += (end_ts->tv_usec - start_ts->tv_usec);
|
|
23
|
+ return usec;
|
|
24
|
+}
|
|
25
|
+
|
|
26
|
+unsigned long long timeval_diff_msec(struct timeval *start_ts, struct timeval *end_ts) {
|
|
27
|
+ unsigned long long msec;
|
|
28
|
+ msec = (end_ts->tv_sec - start_ts->tv_sec) * 1000;
|
|
29
|
+ msec += (end_ts->tv_usec - start_ts->tv_usec) / 1000;
|
|
30
|
+ return msec;
|
|
31
|
+}
|
|
32
|
+
|
|
33
|
+unsigned long long timeval_diff_sec(struct timeval *start_ts, struct timeval *end_ts) {
|
|
34
|
+ unsigned long long sec;
|
|
35
|
+ sec = (end_ts->tv_sec - start_ts->tv_sec);
|
|
36
|
+ sec += (end_ts->tv_usec - start_ts->tv_usec) / 1000000;
|
|
37
|
+ return sec;
|
|
38
|
+}
|