trace: simplify trace point registration
[dpdk.git] / lib / librte_eal / include / rte_trace_point_register.h
index 4e2306f..4f5c865 100644 (file)
@@ -2,20 +2,25 @@
  * Copyright(C) 2020 Marvell International Ltd.
  */
 
-#ifndef _RTE_TRACE_POINT_H_
-#error do not include this file directly, use <rte_trace_point.h> instead
-#endif
-
 #ifndef _RTE_TRACE_POINT_REGISTER_H_
 #define _RTE_TRACE_POINT_REGISTER_H_
 
+#ifdef _RTE_TRACE_POINT_H_
+#error for registration, include this file first before <rte_trace_point.h>
+#endif
+
 #include <rte_per_lcore.h>
+#include <rte_trace_point.h>
 
 RTE_DECLARE_PER_LCORE(volatile int, trace_point_sz);
 
 #define RTE_TRACE_POINT_REGISTER(trace, name) \
+rte_trace_point_t __attribute__((section("__rte_trace_point"))) __##trace; \
+RTE_INIT(trace##_init) \
+{ \
        __rte_trace_point_register(&__##trace, RTE_STR(name), \
-               (void (*)(void)) trace)
+               (void (*)(void)) trace); \
+}
 
 #define __rte_trace_point_emit_header_generic(t) \
        RTE_PER_LCORE(trace_point_sz) = __RTE_TRACE_EVENT_HEADER_SZ