9 #include <linux/kernel.h>
10 #include <traceevent/event-parse.h>
11 #include "trace-event.h"
15 * global trace_event object used by trace_event__tp_format
17 * TODO There's no cleanup call for this. Add some sort of
18 * __exit function support and call trace_event__cleanup
21 static struct trace_event tevent
;
23 int trace_event__init(struct trace_event
*t
)
25 struct pevent
*pevent
= pevent_alloc();
28 t
->plugin_list
= traceevent_load_plugins(pevent
);
32 return pevent
? 0 : -1;
35 void trace_event__cleanup(struct trace_event
*t
)
37 traceevent_unload_plugins(t
->plugin_list
, t
->pevent
);
38 pevent_free(t
->pevent
);
41 static struct event_format
*
42 tp_format(const char *sys
, const char *name
)
44 struct pevent
*pevent
= tevent
.pevent
;
45 struct event_format
*event
= NULL
;
50 scnprintf(path
, PATH_MAX
, "%s/%s/%s/format",
51 tracing_events_path
, sys
, name
);
53 if (filename__read_str(path
, &data
, &size
))
56 pevent_parse_format(pevent
, &event
, data
, size
, sys
);
63 trace_event__tp_format(const char *sys
, const char *name
)
65 static bool initialized
;
68 int be
= traceevent_host_bigendian();
69 struct pevent
*pevent
;
71 if (trace_event__init(&tevent
))
74 pevent
= tevent
.pevent
;
75 pevent_set_flag(pevent
, PEVENT_NSEC_OUTPUT
);
76 pevent_set_file_bigendian(pevent
, be
);
77 pevent_set_host_bigendian(pevent
, be
);
81 return tp_format(sys
, name
);