4e2306f1af1337cdd83db9891f1e559a81ddf2eb
[dpdk.git] / lib / librte_eal / include / rte_trace_point_register.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(C) 2020 Marvell International Ltd.
3  */
4
5 #ifndef _RTE_TRACE_POINT_H_
6 #error do not include this file directly, use <rte_trace_point.h> instead
7 #endif
8
9 #ifndef _RTE_TRACE_POINT_REGISTER_H_
10 #define _RTE_TRACE_POINT_REGISTER_H_
11
12 #include <rte_per_lcore.h>
13
14 RTE_DECLARE_PER_LCORE(volatile int, trace_point_sz);
15
16 #define RTE_TRACE_POINT_REGISTER(trace, name) \
17         __rte_trace_point_register(&__##trace, RTE_STR(name), \
18                 (void (*)(void)) trace)
19
20 #define __rte_trace_point_emit_header_generic(t) \
21         RTE_PER_LCORE(trace_point_sz) = __RTE_TRACE_EVENT_HEADER_SZ
22
23 #define __rte_trace_point_emit_header_fp(t) \
24         __rte_trace_point_emit_header_generic(t)
25
26 #define __rte_trace_point_emit(in, type) \
27 do { \
28         RTE_BUILD_BUG_ON(sizeof(type) != sizeof(typeof(in))); \
29         __rte_trace_point_emit_field(sizeof(type), RTE_STR(in), \
30                 RTE_STR(type)); \
31 } while (0)
32
33 #define rte_trace_point_emit_string(in) \
34 do { \
35         RTE_SET_USED(in); \
36         __rte_trace_point_emit_field(__RTE_TRACE_EMIT_STRING_LEN_MAX, \
37                 RTE_STR(in)"[32]", "string_bounded_t"); \
38 } while (0)
39
40 #endif /* _RTE_TRACE_POINT_REGISTER_H_ */