xref: /openbmc/linux/tools/tracing/rtla/src/trace.h (revision 5487b6ce)
1b1696371SDaniel Bristot de Oliveira // SPDX-License-Identifier: GPL-2.0
2b1696371SDaniel Bristot de Oliveira #include <tracefs.h>
3b1696371SDaniel Bristot de Oliveira #include <stddef.h>
4b1696371SDaniel Bristot de Oliveira 
5b5aa0be2SDaniel Bristot de Oliveira struct trace_events {
6b5aa0be2SDaniel Bristot de Oliveira 	struct trace_events *next;
7b5aa0be2SDaniel Bristot de Oliveira 	char *system;
8b5aa0be2SDaniel Bristot de Oliveira 	char *event;
9*5487b6ceSDaniel Bristot de Oliveira 	char *filter;
10336c92b2SDaniel Bristot de Oliveira 	char *trigger;
11b5aa0be2SDaniel Bristot de Oliveira 	char enabled;
12*5487b6ceSDaniel Bristot de Oliveira 	char filter_enabled;
13336c92b2SDaniel Bristot de Oliveira 	char trigger_enabled;
14b5aa0be2SDaniel Bristot de Oliveira };
15b5aa0be2SDaniel Bristot de Oliveira 
16b1696371SDaniel Bristot de Oliveira struct trace_instance {
17b1696371SDaniel Bristot de Oliveira 	struct tracefs_instance		*inst;
18b1696371SDaniel Bristot de Oliveira 	struct tep_handle		*tep;
19b1696371SDaniel Bristot de Oliveira 	struct trace_seq		*seq;
20b1696371SDaniel Bristot de Oliveira };
21b1696371SDaniel Bristot de Oliveira 
22b1696371SDaniel Bristot de Oliveira int trace_instance_init(struct trace_instance *trace, char *tool_name);
23b1696371SDaniel Bristot de Oliveira int trace_instance_start(struct trace_instance *trace);
24b1696371SDaniel Bristot de Oliveira void trace_instance_destroy(struct trace_instance *trace);
25b1696371SDaniel Bristot de Oliveira 
26b1696371SDaniel Bristot de Oliveira struct trace_seq *get_trace_seq(void);
27b1696371SDaniel Bristot de Oliveira int enable_tracer_by_name(struct tracefs_instance *inst, const char *tracer_name);
28b1696371SDaniel Bristot de Oliveira void disable_tracer(struct tracefs_instance *inst);
29b1696371SDaniel Bristot de Oliveira 
30b1696371SDaniel Bristot de Oliveira int enable_osnoise(struct trace_instance *trace);
31b1696371SDaniel Bristot de Oliveira int enable_timerlat(struct trace_instance *trace);
32b1696371SDaniel Bristot de Oliveira 
33b1696371SDaniel Bristot de Oliveira struct tracefs_instance *create_instance(char *instance_name);
34b1696371SDaniel Bristot de Oliveira void destroy_instance(struct tracefs_instance *inst);
35b1696371SDaniel Bristot de Oliveira 
36b1696371SDaniel Bristot de Oliveira int save_trace_to_file(struct tracefs_instance *inst, const char *filename);
37b1696371SDaniel Bristot de Oliveira int collect_registered_events(struct tep_event *tep, struct tep_record *record,
38b1696371SDaniel Bristot de Oliveira 			      int cpu, void *context);
39b5aa0be2SDaniel Bristot de Oliveira 
40b5aa0be2SDaniel Bristot de Oliveira struct trace_events *trace_event_alloc(const char *event_string);
41b5aa0be2SDaniel Bristot de Oliveira void trace_events_disable(struct trace_instance *instance,
42b5aa0be2SDaniel Bristot de Oliveira 			  struct trace_events *events);
43b5aa0be2SDaniel Bristot de Oliveira void trace_events_destroy(struct trace_instance *instance,
44b5aa0be2SDaniel Bristot de Oliveira 			  struct trace_events *events);
45b5aa0be2SDaniel Bristot de Oliveira int trace_events_enable(struct trace_instance *instance,
46b5aa0be2SDaniel Bristot de Oliveira 			  struct trace_events *events);
47336c92b2SDaniel Bristot de Oliveira 
48*5487b6ceSDaniel Bristot de Oliveira int trace_event_add_filter(struct trace_events *event, char *filter);
49336c92b2SDaniel Bristot de Oliveira int trace_event_add_trigger(struct trace_events *event, char *trigger);
50