static struct trace_point_head tp_list = STAILQ_HEAD_INITIALIZER(tp_list);
static struct trace trace;
+struct trace *
+trace_obj_get(void)
+{
+ return &trace;
+}
+
+struct trace_point_head *
+trace_list_head_get(void)
+{
+ return &tp_list;
+}
+
+int
+eal_trace_init(void)
+{
+ /* One of the trace point registration failed */
+ if (trace.register_errno) {
+ rte_errno = trace.register_errno;
+ goto fail;
+ }
+
+ if (!rte_trace_is_enabled())
+ return 0;
+
+ rte_spinlock_init(&trace.lock);
+
+ /* Is duplicate trace name registered */
+ if (trace_has_duplicate_entry())
+ goto fail;
+
+ /* Generate UUID ver 4 with total size of events and number of
+ * events
+ */
+ trace_uuid_generate();
+
+ /* Generate CTF TDSL metadata */
+ if (trace_metadata_create() < 0)
+ goto fail;
+
+ /* Create trace directory */
+ if (trace_mkdir())
+ goto free_meta;
+
+ /* Save current epoch timestamp for future use */
+ if (trace_epoch_time_save() < 0)
+ goto fail;
+
+ rte_trace_mode_set(trace.mode);
+
+ return 0;
+
+free_meta:
+ trace_metadata_destroy();
+fail:
+ trace_err("failed to initialize trace [%s]", rte_strerror(rte_errno));
+ return -rte_errno;
+}
+
+void
+eal_trace_fini(void)
+{
+ if (!rte_trace_is_enabled())
+ return;
+ trace_metadata_destroy();
+}
+
bool
rte_trace_is_enabled(void)
{