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