examples/l3fwd: merge l3fwd-acl example
[dpdk.git] / lib / 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_REGISTER_H_
6 #define _RTE_TRACE_POINT_REGISTER_H_
7
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11
12 #ifdef _RTE_TRACE_POINT_H_
13 #error for registration, include this file first before <rte_trace_point.h>
14 #endif
15
16 #include <rte_per_lcore.h>
17 #include <rte_trace_point.h>
18
19 RTE_DECLARE_PER_LCORE(volatile int, trace_point_sz);
20
21 #define RTE_TRACE_POINT_REGISTER(trace, name) \
22 rte_trace_point_t __attribute__((section("__rte_trace_point"))) __##trace; \
23 RTE_INIT(trace##_init) \
24 { \
25         __rte_trace_point_register(&__##trace, RTE_STR(name), \
26                 (void (*)(void)) trace); \
27 }
28
29 #define __rte_trace_point_emit_header_generic(t) \
30         RTE_PER_LCORE(trace_point_sz) = __RTE_TRACE_EVENT_HEADER_SZ
31
32 #define __rte_trace_point_emit_header_fp(t) \
33         __rte_trace_point_emit_header_generic(t)
34
35 #define __rte_trace_point_emit(in, type) \
36 do { \
37         RTE_BUILD_BUG_ON(sizeof(type) != sizeof(typeof(in))); \
38         __rte_trace_point_emit_field(sizeof(type), RTE_STR(in), \
39                 RTE_STR(type)); \
40 } while (0)
41
42 #define rte_trace_point_emit_string(in) \
43 do { \
44         RTE_SET_USED(in); \
45         __rte_trace_point_emit_field(__RTE_TRACE_EMIT_STRING_LEN_MAX, \
46                 RTE_STR(in)"[32]", "string_bounded_t"); \
47 } while (0)
48
49 #ifdef __cplusplus
50 }
51 #endif
52
53 #endif /* _RTE_TRACE_POINT_REGISTER_H_ */