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_ */