ApraLinuxUtils
1.0.0
C++ utility library for embedded Linux systems
Loading...
Searching...
No Matches
Macro.h
Go to the documentation of this file.
1
/*
2
* Macro.h
3
*
4
* Copyright (c) 2024 Apra Labs
5
*
6
* This file is part of ApraUtils.
7
*
8
* Licensed under the MIT License.
9
* See LICENSE file in the project root for full license information.
10
*/
11
12
#ifndef INCLUDES_APRA_MACRO_H_
13
#define INCLUDES_APRA_MACRO_H_
14
15
#include "
ScopeFunction.h
"
16
#include <time.h>
17
#include <sys/time.h>
18
/*
19
* Timestamp Functions
20
*/
21
#define GTTIME(ret) { \
22
struct timeval tv; \
23
gettimeofday(&tv, NULL); \
24
ret = (tv.tv_sec); \
25
ret = ret * 1000000; \
26
ret+=tv.tv_usec;\
27
}
28
29
#define TIMEOP(n,x) { \
30
int64_t st,et; \
31
GTTIME(st); \
32
{x;} \
33
GTTIME(et); \
34
printf("%s -> %lld\n",n,et-st); \
35
}
36
37
#define TIMEOP_LOG(n,x,d) { \
38
int64_t st,et; \
39
GTTIME(st); \
40
{x;} \
41
GTTIME(et); \
42
if(d) printf("%s -> %ld\n",n,et-st); \
43
}
44
45
#define CURRTIME(var) int64_t var;\
46
{ GTTIME(var);\
47
}
48
49
#define LOG_CURRTIME(){\
50
CURRTIME(t);\
51
printf("%s : %lld\n",__func__,t);\
52
}
53
54
#define XPROCESSTIME(var,x) { x;\
55
}
56
57
#define PROCESSTIME(var,x) int64_t var;\
58
{ int64_t st,et;\
59
GTTIME(st);\
60
x;\
61
GTTIME(et);\
62
var=et-st;\
63
}
64
#define PRINTFLOW apra::ScopeFunction s(string(__func__));
65
66
#define GTMONOTIMENS(ret) \
67
{ \
68
struct timespec ts; \
69
clock_gettime(CLOCK_MONOTONIC, &ts); \
70
ret=(ts.tv_sec); \
71
ret=ret * 1000000000; \
72
ret+=ts.tv_nsec;\
73
}
74
75
#define MONOTIMEUS(ret) \
76
{ \
77
GTMONOTIMENS(ret); \
78
ret = ret / 1000; \
79
}
80
81
#define MONOCURRTIME(ret) int64_t ret; \
82
{ \
83
MONOTIMEUS(ret); \
84
}
85
86
#endif
/* INCLUDES_APRA_MACRO_H_ */
ScopeFunction.h
includes
utils
Macro.h
Generated by
1.9.8