xref: /aosp_15_r20/external/libtracefs/Documentation/libtracefs.txt (revision 287e80b3a36113050663245e7f2c00d274188f18)
1*287e80b3SSadaf Ebrahimilibtracefs(3)
2*287e80b3SSadaf Ebrahimi=============
3*287e80b3SSadaf Ebrahimi
4*287e80b3SSadaf EbrahimiNAME
5*287e80b3SSadaf Ebrahimi----
6*287e80b3SSadaf Ebrahimilibtracefs - Linux kernel trace file system library
7*287e80b3SSadaf Ebrahimi
8*287e80b3SSadaf EbrahimiSYNOPSIS
9*287e80b3SSadaf Ebrahimi--------
10*287e80b3SSadaf Ebrahimi[verse]
11*287e80b3SSadaf Ebrahimi--
12*287e80b3SSadaf Ebrahimi*#include <tracefs.h>*
13*287e80b3SSadaf Ebrahimi
14*287e80b3SSadaf EbrahimiLocations of tracing files and directories:
15*287e80b3SSadaf Ebrahimi	char pass:[*]*tracefs_get_tracing_file*(const char pass:[*]_name_);
16*287e80b3SSadaf Ebrahimi	void *tracefs_put_tracing_file*(char pass:[*]_name_);
17*287e80b3SSadaf Ebrahimi	const char pass:[*]*tracefs_tracing_dir*(void);
18*287e80b3SSadaf Ebrahimi	const char pass:[*]*tracefs_debug_dir*(void);
19*287e80b3SSadaf Ebrahimi	int *tracefs_set_tracing_dir*(char pass:[*]_tracing_dir_)
20*287e80b3SSadaf Ebrahimi	int *tracefs_tracing_dir_is_mounted*(bool _mount_, const char pass:[**]_path_);
21*287e80b3SSadaf Ebrahimi
22*287e80b3SSadaf EbrahimiTrace instances:
23*287e80b3SSadaf Ebrahimi	struct tracefs_instance pass:[*]*tracefs_instance_create*(const char pass:[*]_name_);
24*287e80b3SSadaf Ebrahimi	int *tracefs_instance_destroy*(struct tracefs_instance pass:[*]_instance_);
25*287e80b3SSadaf Ebrahimi	struct tracefs_instance pass:[*]*tracefs_instance_alloc*(const char pass:[*]_tracing_dir_, const char pass:[*]_name_);
26*287e80b3SSadaf Ebrahimi	void *tracefs_instance_free*(struct tracefs_instance pass:[*]_instance_);
27*287e80b3SSadaf Ebrahimi	char pass:[**]*tracefs_instances*(const char pass:[*]_regex_);
28*287e80b3SSadaf Ebrahimi	bool *tracefs_instance_is_new*(struct tracefs_instance pass:[*]_instance_);
29*287e80b3SSadaf Ebrahimi	bool *tracefs_file_exists*(struct tracefs_instance pass:[*]_instance_, char pass:[*]_name_);
30*287e80b3SSadaf Ebrahimi	bool *tracefs_dir_exists*(struct tracefs_instance pass:[*]_instance_, char pass:[*]_name_);
31*287e80b3SSadaf Ebrahimi	char pass:[*]*tracefs_instance_get_file*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_file_);
32*287e80b3SSadaf Ebrahimi	char pass:[*]*tracefs_instance_get_dir*(struct tracefs_instance pass:[*]_instance_);
33*287e80b3SSadaf Ebrahimi	int *tracefs_instance_file_open*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_file_, int _mode_);
34*287e80b3SSadaf Ebrahimi	int *tracefs_instance_file_write*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_file_, const char pass:[*]_str_);
35*287e80b3SSadaf Ebrahimi	int *tracefs_instance_file_append*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_file_, const char pass:[*]_str_);
36*287e80b3SSadaf Ebrahimi	int *tracefs_instance_file_clear*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_file_);
37*287e80b3SSadaf Ebrahimi	char pass:[*]*tracefs_instance_file_read*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_file_, int pass:[*]_psize_);
38*287e80b3SSadaf Ebrahimi	int *tracefs_instance_file_read_number*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_file_, long long int pass:[*]_res_);
39*287e80b3SSadaf Ebrahimi	const char pass:[*]*tracefs_instance_get_name*(struct tracefs_instance pass:[*]_instance_);
40*287e80b3SSadaf Ebrahimi	const char pass:[*]*tracefs_instance_get_trace_dir*(struct tracefs_instance pass:[*]_instance_);
41*287e80b3SSadaf Ebrahimi	int *tracefs_instances_walk*(int (pass:[*]_callback_)(const char pass:[*], void pass:[*]), void pass:[*]_context)_;
42*287e80b3SSadaf Ebrahimi	bool *tracefs_instance_exists*(const char pass:[*]_name_);
43*287e80b3SSadaf Ebrahimi	int *tracefs_instance_set_affinity*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_cpu_str_);
44*287e80b3SSadaf Ebrahimi	int *tracefs_instance_set_affinity_set*(struct tracefs_instance pass:[*]_instance_, cpu_set_t pass:[*]_set_, size_t _set_size_);
45*287e80b3SSadaf Ebrahimi	int *tracefs_instance_set_affinity_raw*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_mask_);
46*287e80b3SSadaf Ebrahimi	char pass:[*]*tracefs_instance_get_affinity*(struct tracefs_instance pass:[*]_instance_);
47*287e80b3SSadaf Ebrahimi	int *tracefs_instance_get_affinity_set*(struct tracefs_instance pass:[*]_instance_, cpu_set_t pass:[*]_set_, size_t _set_size_);
48*287e80b3SSadaf Ebrahimi	char pass:[*]*tracefs_instance_get_affinity_raw*(struct tracefs_instance pass:[*]_instance_);
49*287e80b3SSadaf Ebrahimi	size_t *tracefs_instance_get_buffer_size*(struct tracefs_instance pass:[*]_instance_, int _cpu_);
50*287e80b3SSadaf Ebrahimi	int *tracefs_instance_set_buffer_size*(struct tracefs_instance pass:[*]_instance_, size_t _size_, int _cpu_);
51*287e80b3SSadaf Ebrahimi
52*287e80b3SSadaf EbrahimiTrace events:
53*287e80b3SSadaf Ebrahimi	char pass:[*]pass:[*]*tracefs_event_systems*(const char pass:[*]_tracing_dir_);
54*287e80b3SSadaf Ebrahimi	char pass:[*]pass:[*]*tracefs_system_events*(const char pass:[*]_tracing_dir_, const char pass:[*]_system_);
55*287e80b3SSadaf Ebrahimi	int *tracefs_event_enable*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_system_,
56*287e80b3SSadaf Ebrahimi                           const char pass:[*]_event_);
57*287e80b3SSadaf Ebrahimi	int *tracefs_event_disable*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_system_,
58*287e80b3SSadaf Ebrahimi                            const char pass:[*]_event_);
59*287e80b3SSadaf Ebrahimi	enum tracefs_enable_state *tracefs_event_is_enabled*(struct tracefs_instance pass:[*]_instance_,
60*287e80b3SSadaf Ebrahimi				 const char pass:[*]_system_, const char pass:[*]_event_);
61*287e80b3SSadaf Ebrahimi	int *tracefs_iterate_raw_events*(struct tep_handle pass:[*]_tep_, struct tracefs_instance pass:[*]_instance_, cpu_set_t pass:[*]_cpus_, int _cpu_size_, int (pass:[*]_callback_)(struct tep_event pass:[*], struct tep_record pass:[*], int, void pass:[*]), void pass:[*]_callback_context_);
62*287e80b3SSadaf Ebrahimi	void *tracefs_iterate_stop*(struct tracefs_instance pass:[*]_instance_);
63*287e80b3SSadaf Ebrahimi	int *tracefs_follow_event*(struct tep_handle pass:[*]_tep_, struct tracefs_instance pass:[*]_instance_,
64*287e80b3SSadaf Ebrahimi				  const char pass:[*]_system_, const char pass:[*]_event_name_,
65*287e80b3SSadaf Ebrahimi				  int (pass:[*]_callback_)(struct tep_event pass:[*],
66*287e80b3SSadaf Ebrahimi						  struct tep_record pass:[*],
67*287e80b3SSadaf Ebrahimi						  int, void pass:[*]),
68*287e80b3SSadaf Ebrahimi				  void pass:[*]_callback_data_);
69*287e80b3SSadaf Ebrahimi	int *tracefs_follow_missed_events*(struct tracefs_instance pass:[*]_instance_,
70*287e80b3SSadaf Ebrahimi				  int (pass:[*]_callback_)(struct tep_event pass:[*],
71*287e80b3SSadaf Ebrahimi						  struct tep_record pass:[*],
72*287e80b3SSadaf Ebrahimi						  int, void pass:[*]),
73*287e80b3SSadaf Ebrahimi				  void pass:[*]_callback_data_);
74*287e80b3SSadaf Ebrahimi	struct tep_handle pass:[*]*tracefs_local_events*(const char pass:[*]_tracing_dir_);
75*287e80b3SSadaf Ebrahimi	struct tep_handle pass:[*]*tracefs_local_events_system*(const char pass:[*]_tracing_dir_, const char pass:[*] const pass:[*]_sys_names_);
76*287e80b3SSadaf Ebrahimi	int *tracefs_fill_local_events*(const char pass:[*]_tracing_dir_, struct tep_handle pass:[*]_tep_, int pass:[*]_parsing_failures_);
77*287e80b3SSadaf Ebrahimi	int *tracefs_load_cmdlines*(const char pass:[*]_tracing_dir_, struct tep_handle pass:[*]_tep_);
78*287e80b3SSadaf Ebrahimi	char pass:[*]*tracefs_event_get_file*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_system_, const char pass:[*]_event_,
79*287e80b3SSadaf Ebrahimi			     const char pass:[*]_file_);
80*287e80b3SSadaf Ebrahimi	char pass:[*]*tracefs_event_file_read*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_system_, const char pass:[*]_event_,
81*287e80b3SSadaf Ebrahimi			      const char pass:[*]_file_, int pass:[*]_psize_);
82*287e80b3SSadaf Ebrahimi	int *tracefs_event_file_write*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_system_, const char pass:[*]_event_,
83*287e80b3SSadaf Ebrahimi			     const char pass:[*]_file_, const char pass:[*]_str_);
84*287e80b3SSadaf Ebrahimi	int *tracefs_event_file_append*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_system_, const char pass:[*]_event_,
85*287e80b3SSadaf Ebrahimi			      const char pass:[*]_file_, const char pass:[*]_str_);
86*287e80b3SSadaf Ebrahimi	int *tracefs_event_file_clear*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_system_, const char pass:[*]_event_,
87*287e80b3SSadaf Ebrahimi			     const char pass:[*]_file_);
88*287e80b3SSadaf Ebrahimi	bool *tracefs_event_file_exists*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_system_, const char pass:[*]_event_,
89*287e80b3SSadaf Ebrahimi
90*287e80b3SSadaf EbrahimiEvent filters:
91*287e80b3SSadaf Ebrahimi	int *tracefs_filter_string_append*(struct tep_event pass:[*]_event_, char pass:[**]_filter_,
92*287e80b3SSadaf Ebrahimi					 struct tracefs_filter _type_, const char pass:[*]_field_,
93*287e80b3SSadaf Ebrahimi					 enum tracefs_synth_compare _compare_, const char pass:[*]_val_);
94*287e80b3SSadaf Ebrahimi	int *tracefs_filter_string_verify*(struct tep_event pass:[*]_event_, const char pass:[*]_filter_, char pass:[**]_err_);
95*287e80b3SSadaf Ebrahimi	int *tracefs_event_filter_apply*(struct tracefs_instance pass:[*]_instance_, struct tep_event pass:[*]_event_, const char pass:[*]_filter_);
96*287e80b3SSadaf Ebrahimi	int *tracefs_event_filter_clear*(struct tracefs_instance pass:[*]_instance_, struct tep_event pass:[*]_event_);
97*287e80b3SSadaf Ebrahimi
98*287e80b3SSadaf EbrahimiFunction filters:
99*287e80b3SSadaf Ebrahimi	int *tracefs_function_filter*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_filter_, const char pass:[*]_module_, int _flags_);
100*287e80b3SSadaf Ebrahimi	int *tracefs_function_notrace*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_filter_, const char pass:[*]_module_, int _flags_);
101*287e80b3SSadaf Ebrahimi	int *tracefs_filter_functions*(const char pass:[*]_filter_, const char pass:[*]_module_, char pass:[*]pass:[*]pass:[*]_list_);
102*287e80b3SSadaf Ebrahimi
103*287e80b3SSadaf EbrahimiTrace helper functions:
104*287e80b3SSadaf Ebrahimi	void *tracefs_list_free*(char pass:[*]pass:[*]_list_);
105*287e80b3SSadaf Ebrahimi	char pass:[**]*tracefs_list_add*(char **_list_, const char *_string_);
106*287e80b3SSadaf Ebrahimi	int *tracefs_list_size*(char pass:[**]_list_);
107*287e80b3SSadaf Ebrahimi	char pass:[*]*tracefs_get_clock*(struct tracefs_instance pass:[*]_instance_);
108*287e80b3SSadaf Ebrahimi	int *tracefs_trace_is_on*(struct tracefs_instance pass:[*]_instance_);
109*287e80b3SSadaf Ebrahimi	int *tracefs_trace_on*(struct tracefs_instance pass:[*]_instance_);
110*287e80b3SSadaf Ebrahimi	int *tracefs_trace_off*(struct tracefs_instance pass:[*]_instance_);
111*287e80b3SSadaf Ebrahimi	int *tracefs_trace_on_get_fd*(struct tracefs_instance pass:[*]_instance_);
112*287e80b3SSadaf Ebrahimi	int *tracefs_trace_on_fd*(int _fd_);
113*287e80b3SSadaf Ebrahimi	int *tracefs_trace_off_fd*(int _fd_);
114*287e80b3SSadaf Ebrahimi
115*287e80b3SSadaf EbrahimiTrace stream:
116*287e80b3SSadaf Ebrahimi	ssize_t *tracefs_trace_pipe_stream*(int _fd_, struct tracefs_instance pass:[*]_instance_, int _flags_);
117*287e80b3SSadaf Ebrahimi	ssize_t *tracefs_trace_pipe_print*(struct tracefs_instance pass:[*]_instance_, int _flags_);
118*287e80b3SSadaf Ebrahimi	void *tracefs_trace_pipe_stop*(struct tracefs_instance pass:[*]_instance_);
119*287e80b3SSadaf Ebrahimi
120*287e80b3SSadaf EbrahimiTrace options:
121*287e80b3SSadaf Ebrahimi	const struct tracefs_options_mask pass:[*]*tracefs_options_get_supported*(struct tracefs_instance pass:[*]_instance_);
122*287e80b3SSadaf Ebrahimi	bool *tracefs_option_is_supported*(struct tracefs_instance pass:[*]_instance_, enum tracefs_option_id _id_);
123*287e80b3SSadaf Ebrahimi	const struct tracefs_options_mask pass:[*]*tracefs_options_get_enabled*(struct tracefs_instance pass:[*]_instance_);
124*287e80b3SSadaf Ebrahimi	bool *tracefs_option_is_enabled*(struct tracefs_instance pass:[*]_instance_, enum tracefs_option_id _id_);
125*287e80b3SSadaf Ebrahimi	bool *tracefs_option_mask_is_set*(const struct tracefs_options_mask *options, enum tracefs_option_id id);
126*287e80b3SSadaf Ebrahimi	int *tracefs_option_enable*(struct tracefs_instance pass:[*]_instance_, enum tracefs_option_id _id_);
127*287e80b3SSadaf Ebrahimi	int *tracefs_option_disable*(struct tracefs_instance pass:[*]_instance_, enum tracefs_option_id _id_);
128*287e80b3SSadaf Ebrahimi	const char pass:[*]*tracefs_option_name*(enum tracefs_option_id _id_);
129*287e80b3SSadaf Ebrahimi	enum tracefs_option_id *tracefs_option_id*(const char pass:[*]_name_);
130*287e80b3SSadaf Ebrahimi
131*287e80b3SSadaf EbrahimiFtrace tracers:
132*287e80b3SSadaf Ebrahimi	char pass:[*]pass:[*]*tracefs_tracers*(const char pass:[*]_tracing_dir_);
133*287e80b3SSadaf Ebrahimi	bool *tracefs_tracer_available*(const char pass:[*]_tracing_dir_, const char pass:[*]_tracer_);
134*287e80b3SSadaf Ebrahimi	int *tracefs_tracer_set*(struct tracefs_instance pass:[*]_instance_, enum tracefs_tracers _tracer_);
135*287e80b3SSadaf Ebrahimi	int *tracefs_tracer_set*(struct tracefs_instance pass:[*]_instance_, enum tracefs_tracers _tracer_, const char pass:[*]_name_);
136*287e80b3SSadaf Ebrahimi	int *tracefs_tracer_clear*(struct tracefs_instance pass:[*]_instance_);
137*287e80b3SSadaf Ebrahimi
138*287e80b3SSadaf EbrahimiWriting data in the trace buffer:
139*287e80b3SSadaf Ebrahimi	int *tracefs_print_init*(struct tracefs_instance pass:[*]_instance_);
140*287e80b3SSadaf Ebrahimi	int *tracefs_printf*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_fmt_, _..._);
141*287e80b3SSadaf Ebrahimi	int *tracefs_vprintf*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_fmt_, va_list _ap_);
142*287e80b3SSadaf Ebrahimi	void *tracefs_print_close*(struct tracefs_instance pass:[*]_instance_);
143*287e80b3SSadaf Ebrahimi	int *tracefs_binary_init*(struct tracefs_instance pass:[*]_instance_);
144*287e80b3SSadaf Ebrahimi	int *tracefs_binary_write*(struct tracefs_instance pass:[*]_instance_, void pass:[*]_data_, int _len_);
145*287e80b3SSadaf Ebrahimi	void *tracefs_binary_close*(struct tracefs_instance pass:[*]_instance_);
146*287e80b3SSadaf Ebrahimi
147*287e80b3SSadaf EbrahimiControl library logs:
148*287e80b3SSadaf Ebrahimi	int *tracefs_set_loglevel*(enum tep_loglevel _level_);
149*287e80b3SSadaf Ebrahimi
150*287e80b3SSadaf EbrahimiDynamic event generic APIs:
151*287e80b3SSadaf Ebrahimi	struct *tracefs_dynevent*;
152*287e80b3SSadaf Ebrahimi	enum *tracefs_dynevent_type*;
153*287e80b3SSadaf Ebrahimi	int *tracefs_dynevent_create*(struct tracefs_dynevent pass:[*]_devent_);
154*287e80b3SSadaf Ebrahimi	int *tracefs_dynevent_destroy*(struct tracefs_dynevent pass:[*]_devent_, bool _force_);
155*287e80b3SSadaf Ebrahimi	int *tracefs_dynevent_destroy_all*(unsigned int _types_, bool _force_);
156*287e80b3SSadaf Ebrahimi	void *tracefs_dynevent_free*(struct tracefs_dynevent pass:[*]_devent_);
157*287e80b3SSadaf Ebrahimi	void *tracefs_dynevent_list_free*(struct tracefs_dynevent pass:[*]pass:[*]_events_);
158*287e80b3SSadaf Ebrahimi	struct tracefs_dynevent pass:[*]*tracefs_dynevent_get*(enum tracefs_dynevent_type _type_, const char pass:[*]_system_, const char pass:[*]_event_);
159*287e80b3SSadaf Ebrahimi	struct tracefs_dynevent pass:[*]pass:[*]*tracefs_dynevent_get_all*(unsigned int _types_, const char pass:[*]_system_);
160*287e80b3SSadaf Ebrahimi	enum tracefs_dynevent_type *tracefs_dynevent_info*(struct tracefs_dynevent pass:[*]_dynevent_, char pass:[*]pass:[*]_system_, char pass:[*]pass:[*]_event_, char pass:[*]pass:[*]_prefix_, char pass:[*]pass:[*]_addr_, char pass:[*]pass:[*]_format_);
161*287e80b3SSadaf Ebrahimi	struct tep_event pass:[*]*tracefs_dynevent_get_event*(struct tep_handle pass:[*]_tep_, struct tracefs_dynevent pass:[*]_dynevent_);
162*287e80b3SSadaf Ebrahimi
163*287e80b3SSadaf EbrahimiEven probes (eprobes):
164*287e80b3SSadaf Ebrahimi	struct tracefs_dynevent pass:[*] *tracefs_eprobe_alloc*(const char pass:[*]_system_, const char pass:[*]_event_, const char pass:[*]_target_system_, const char pass:[*]_target_event_, const char pass:[*]_fetchargs_);
165*287e80b3SSadaf Ebrahimi
166*287e80b3SSadaf EbrahimiUprobes, Kprobes and Kretprobes:
167*287e80b3SSadaf Ebrahimi	struct tracefs_dynevent pass:[*] *tracefs_kprobe_alloc*(const char pass:[*]_system_, const char pass:[*]_event_, const char pass:[*]_addr_, const char pass:[*]_format_);
168*287e80b3SSadaf Ebrahimi	struct tracefs_dynevent pass:[*] *tracefs_kretprobe_alloc*(const char pass:[*]_system_, const char pass:[*]_event_, const char pass:[*]_addr_, const char pass:[*]_format_, unsigned int _max_);
169*287e80b3SSadaf Ebrahimi	int *tracefs_kprobe_raw*(const char pass:[*]_system_, const char pass:[*]_event_, const char pass:[*]_addr_, const char pass:[*]_format_);
170*287e80b3SSadaf Ebrahimi	int *tracefs_kretprobe_raw*(const char pass:[*]_system_, const char pass:[*]_event_, const char pass:[*]_addr_, const char pass:[*]_format_);
171*287e80b3SSadaf Ebrahimi	*tracefs_uprobe_alloc*(const char pass:[*]_system_, const char pass:[*]_event_,
172*287e80b3SSadaf Ebrahimi		     const char pass:[*]_file_, unsigned long long _offset_, const char pass:[*]_fetchargs_)
173*287e80b3SSadaf Ebrahimi	*tracefs_uretprobe_alloc*(const char pass:[*]_system_, const char pass:[*]_event_,
174*287e80b3SSadaf Ebrahimi		     const char pass:[*]_file_, unsigned long long _offset_, const char pass:[*]_fetchargs_);
175*287e80b3SSadaf Ebrahimi
176*287e80b3SSadaf EbrahimiSynthetic events:
177*287e80b3SSadaf Ebrahimi	struct tracefs_synth pass:[*]*tracefs_sql*(struct tep_handle pass:[*]_tep_, const char pass:[*]_name_,
178*287e80b3SSadaf Ebrahimi					const char pass:[*]_sql_buffer_, char pass:[**]_err_);
179*287e80b3SSadaf Ebrahimi	struct tracefs_synth pass:[*]*tracefs_synth_alloc*(struct tep_handle pass:[*]_tep_,
180*287e80b3SSadaf Ebrahimi						 const char pass:[*]_name_,
181*287e80b3SSadaf Ebrahimi						 const char pass:[*]_start_system_,
182*287e80b3SSadaf Ebrahimi						 const char pass:[*]_start_event_,
183*287e80b3SSadaf Ebrahimi						 const char pass:[*]_end_system_,
184*287e80b3SSadaf Ebrahimi						 const char pass:[*]_end_event_,
185*287e80b3SSadaf Ebrahimi						 const char pass:[*]_start_match_field_,
186*287e80b3SSadaf Ebrahimi						 const char pass:[*]_end_match_field_,
187*287e80b3SSadaf Ebrahimi						 const char pass:[*]_match_name_);
188*287e80b3SSadaf Ebrahimi	int *tracefs_synth_add_match_field*(struct tracefs_synth pass:[*]_synth_,
189*287e80b3SSadaf Ebrahimi					  const char pass:[*]_start_match_field_,
190*287e80b3SSadaf Ebrahimi					  const char pass:[*]_end_match_field_,
191*287e80b3SSadaf Ebrahimi					  const char pass:[*]_name_);
192*287e80b3SSadaf Ebrahimi	int *tracefs_synth_add_compare_field*(struct tracefs_synth pass:[*]_synth_,
193*287e80b3SSadaf Ebrahimi					    const char pass:[*]_start_compare_field_,
194*287e80b3SSadaf Ebrahimi					    const char pass:[*]_end_compare_field_,
195*287e80b3SSadaf Ebrahimi					    enum tracefs_synth_calc _calc_,
196*287e80b3SSadaf Ebrahimi					    const char pass:[*]_name_);
197*287e80b3SSadaf Ebrahimi	int *tracefs_synth_add_start_field*(struct tracefs_synth pass:[*]_synth_,
198*287e80b3SSadaf Ebrahimi					  const char pass:[*]_start_field_,
199*287e80b3SSadaf Ebrahimi					  const char pass:[*]_name_);
200*287e80b3SSadaf Ebrahimi	int *tracefs_synth_add_end_field*(struct tracefs_synth pass:[*]_synth_,
201*287e80b3SSadaf Ebrahimi					const char pass:[*]_end_field_,
202*287e80b3SSadaf Ebrahimi					const char pass:[*]_name_);
203*287e80b3SSadaf Ebrahimi	int *tracefs_synth_append_start_filter*(struct tracefs_synth pass:[*]_synth_,
204*287e80b3SSadaf Ebrahimi					      struct tracefs_filter _type_,
205*287e80b3SSadaf Ebrahimi					      const char pass:[*]_field_,
206*287e80b3SSadaf Ebrahimi					      enum tracefs_synth_compare _compare_,
207*287e80b3SSadaf Ebrahimi					      const char pass:[*]_val_);
208*287e80b3SSadaf Ebrahimi	int *tracefs_synth_append_end_filter*(struct tracefs_synth pass:[*]_synth_,
209*287e80b3SSadaf Ebrahimi					    struct tracefs_filter _type_,
210*287e80b3SSadaf Ebrahimi					    const char pass:[*]_field_,
211*287e80b3SSadaf Ebrahimi					    enum tracefs_synth_compare _compare_,
212*287e80b3SSadaf Ebrahimi					    const char pass:[*]_val_);
213*287e80b3SSadaf Ebrahimi	void *tracefs_synth_free*(struct tracefs_synth pass:[*]_synth_);
214*287e80b3SSadaf Ebrahimi	int *tracefs_synth_create*(struct tracefs_synth pass:[*]_synth_);
215*287e80b3SSadaf Ebrahimi	int *tracefs_synth_destroy*(struct tracefs_synth pass:[*]_synth_);
216*287e80b3SSadaf Ebrahimi	int *tracefs_synth_echo_cmd*(struct trace_seq pass:[*]_seq_, struct tracefs_synth pass:[*]_synth_);
217*287e80b3SSadaf Ebrahimi	bool *tracefs_synth_complete*(struct tracefs_synth pass:[*]_synth_);
218*287e80b3SSadaf Ebrahimi	struct tracefs_hist pass:[*]*tracefs_synth_get_start_hist*(struct tracefs_synth pass:[*]_synth_);
219*287e80b3SSadaf Ebrahimi	int *tracefs_synth_trace*(struct tracefs_synth pass:[*]_synth_,
220*287e80b3SSadaf Ebrahimi				enum tracefs_synth_handler _type_, const char pass:[*]_var_);
221*287e80b3SSadaf Ebrahimi	int *tracefs_synth_snapshot*(struct tracefs_synth pass:[*]_synth_,
222*287e80b3SSadaf Ebrahimi				   enum tracefs_synth_handler _type_, const char pass:[*]_var_);
223*287e80b3SSadaf Ebrahimi	int *tracefs_synth_save*(struct tracefs_synth pass:[*]_synth_,
224*287e80b3SSadaf Ebrahimi			       enum tracefs_synth_handler _type_, const char pass:[*]_var_,
225*287e80b3SSadaf Ebrahimi			       char pass:[**]_save_fields_);
226*287e80b3SSadaf Ebrahimi	const char pass:[*]*tracefs_synth_get_name*(struct tracefs_synth pass:[*]_synth_);
227*287e80b3SSadaf Ebrahimi	int *tracefs_synth_raw_fmt*(struct trace_seq pass:[*]_seq_, struct tracefs_synth pass:[*]_synth_);
228*287e80b3SSadaf Ebrahimi	const char pass:[*]*tracefs_synth_show_event*(struct tracefs_synth pass:[*]_synth_);
229*287e80b3SSadaf Ebrahimi	const char pass:[*]*tracefs_synth_show_start_hist*(struct tracefs_synth pass:[*]_synth_);
230*287e80b3SSadaf Ebrahimi	const char pass:[*]*tracefs_synth_show_end_hist*(struct tracefs_synth pass:[*]_synth_);
231*287e80b3SSadaf Ebrahimi	struct tep_event pass:[*]*tracefs_synth_get_event*(struct tep_handle pass:[*]_tep_, struct tracefs_synth pass:[*]_synth_);
232*287e80b3SSadaf Ebrahimi
233*287e80b3SSadaf EbrahimiFtrace errors reporting:
234*287e80b3SSadaf Ebrahimi	char pass:[*]*tracefs_error_last*(struct tracefs_instance pass:[*]_instance_);
235*287e80b3SSadaf Ebrahimi	char pass:[*]*tracefs_error_all*(struct tracefs_instance pass:[*]_instance_);
236*287e80b3SSadaf Ebrahimi	int *tracefs_error_clear*(struct tracefs_instance pass:[*]_instance_);
237*287e80b3SSadaf Ebrahimi
238*287e80b3SSadaf EbrahimiHistograms:
239*287e80b3SSadaf Ebrahimi	struct tracefs_hist pass:[*]*tracefs_hist_alloc*(struct tracefs_tep pass:[*] _tep_,
240*287e80b3SSadaf Ebrahimi				const char pass:[*]_system_, const char pass:[*]_event_,
241*287e80b3SSadaf Ebrahimi				const char pass:[*]_key_, enum tracefs_hist_key_type _type_);
242*287e80b3SSadaf Ebrahimi	struct tracefs_hist pass:[*]*tracefs_hist_alloc_2d*(struct tracefs_tep pass:[*] _tep_,
243*287e80b3SSadaf Ebrahimi				const char pass:[*]_system_, const char pass:[*]_event_,
244*287e80b3SSadaf Ebrahimi				const char pass:[*]_key1_, enum tracefs_hist_key_type _type1_,
245*287e80b3SSadaf Ebrahimi				const char pass:[*]_key2_, enum tracefs_hist_key_type _type2_));
246*287e80b3SSadaf Ebrahimi	struct tracefs_hist pass:[*]*tracefs_hist_alloc_nd*(struct tracefs_tep pass:[*] _tep_,
247*287e80b3SSadaf Ebrahimi				const char pass:[*]_system_, const char pass:[*]_event_,
248*287e80b3SSadaf Ebrahimi				struct tracefs_hist_axis pass:[*]_axes_);
249*287e80b3SSadaf Ebrahimi	struct tracefs_hist pass:[*]*tracefs_hist_alloc_nd_cnt*(struct tep_handle pass:[*]_tep_,
250*287e80b3SSadaf Ebrahimi				  const char pass:[*]_system_, const char pass:[*]_event_name_,
251*287e80b3SSadaf Ebrahimi				  struct tracefs_hist_axis_cnt pass:[*]_axes_);
252*287e80b3SSadaf Ebrahimi	void *tracefs_hist_free*(struct tracefs_hist pass:[*]_hist_);
253*287e80b3SSadaf Ebrahimi	int *tracefs_hist_add_key*(struct tracefs_hist pass:[*]_hist_, const char pass:[*]_key_,
254*287e80b3SSadaf Ebrahimi				 enum tracefs_hist_key_type _type_);
255*287e80b3SSadaf Ebrahimi	int *tracefs_hist_add_key_cnt*(struct tracefs_hist pass:[*]_hist_, const char pass:[*]_key_,
256*287e80b3SSadaf Ebrahimi				 enum tracefs_hist_key_type _type_, int _cnt_);
257*287e80b3SSadaf Ebrahimi	int *tracefs_hist_add_value*(struct tracefs_hist pass:[*]_hist_, const char pass:[*]_value_);
258*287e80b3SSadaf Ebrahimi	int *tracefs_hist_add_sort_key*(struct tracefs_hist pass:[*]_hist_,
259*287e80b3SSadaf Ebrahimi				      const char pass:[*]_sort_key_);
260*287e80b3SSadaf Ebrahimi	int *tracefs_hist_set_sort_key*(struct tracefs_hist pass:[*]_hist_,
261*287e80b3SSadaf Ebrahimi				      const char pass:[*]_sort_key_, _..._);
262*287e80b3SSadaf Ebrahimi	int *tracefs_hist_sort_key_direction*(struct tracefs_hist pass:[*]_hist_,
263*287e80b3SSadaf Ebrahimi					    const char pass:[*]_sort_key_,
264*287e80b3SSadaf Ebrahimi					    enum tracefs_hist_sort_direction _dir_);
265*287e80b3SSadaf Ebrahimi	int *tracefs_hist_add_name*(struct tracefs_hist pass:[*]_hist_, const char pass:[*]_name_);
266*287e80b3SSadaf Ebrahimi	int *tracefs_hist_append_filter*(struct tracefs_hist pass:[*]_hist_,
267*287e80b3SSadaf Ebrahimi				       enum tracefs_filter _type_,
268*287e80b3SSadaf Ebrahimi				       const char pass:[*]_field_,
269*287e80b3SSadaf Ebrahimi				       enum tracefs_compare _compare_,
270*287e80b3SSadaf Ebrahimi				       const char pass:[*]_val_);
271*287e80b3SSadaf Ebrahimi	int *tracefs_hist_echo_cmd*(struct trace_seq pass:[*]_s_, struct tracefs_instance pass:[*]_instance_,
272*287e80b3SSadaf Ebrahimi				  struct tracefs_hist pass:[*]_hist_,
273*287e80b3SSadaf Ebrahimi				  enum tracefs_hist_command _command_);
274*287e80b3SSadaf Ebrahimi	int *tracefs_hist_command*(struct tracefs_instance pass:[*]_instance_,
275*287e80b3SSadaf Ebrahimi				 struct tracefs_hist pass:[*]_hist_,
276*287e80b3SSadaf Ebrahimi				 enum tracefs_hist_command _command_);
277*287e80b3SSadaf Ebrahimi	const char pass:[*]*tracefs_hist_get_name*(struct tracefs_hist pass:[*]_hist_);
278*287e80b3SSadaf Ebrahimi	const char pass:[*]*tracefs_hist_get_event*(struct tracefs_hist pass:[*]_hist_);
279*287e80b3SSadaf Ebrahimi	const char pass:[*]*tracefs_hist_get_system*(struct tracefs_hist pass:[*]_hist_);
280*287e80b3SSadaf Ebrahimi	int *tracefs_hist_start*(struct tracefs_instance pass:[*]_instance_, struct tracefs_hist pass:[*]_hist_);
281*287e80b3SSadaf Ebrahimi	int *tracefs_hist_destroy*(struct tracefs_instance pass:[*]_instance_, struct tracefs_hist pass:[*]_hist_);
282*287e80b3SSadaf Ebrahimi	int *tracefs_hist_pause*(struct tracefs_instance pass:[*]_instance_, struct tracefs_hist pass:[*]_hist_);
283*287e80b3SSadaf Ebrahimi	int *tracefs_hist_continue*(struct tracefs_instance pass:[*]_instance_, struct tracefs_hist pass:[*]_hist_);
284*287e80b3SSadaf Ebrahimi	int *tracefs_hist_reset*(struct tracefs_instance pass:[*]_instance_, struct tracefs_hist pass:[*]_hist_);
285*287e80b3SSadaf Ebrahimi
286*287e80b3SSadaf EbrahimiRecording of trace_pipe_raw files:
287*287e80b3SSadaf Ebrahimi	struct tracefs_cpu pass:[*]*tracefs_cpu_open*(struct tracefs_instance pass:[*]_instance_,
288*287e80b3SSadaf Ebrahimi					     int _cpu_, bool _nonblock_);
289*287e80b3SSadaf Ebrahimi	struct tracefs_cpu pass:[*]*tracefs_cpu_alloc_fd*(int _fd_, int _subbuf_size_, bool _nonblock_);
290*287e80b3SSadaf Ebrahimi	void *tracefs_cpu_close*(struct tracefs_cpu pass:[*]_tcpu_);
291*287e80b3SSadaf Ebrahimi	void *tracefs_cpu_free_fd*(struct tracefs_cpu pass:[*]_tcpu_);
292*287e80b3SSadaf Ebrahimi	int *tracefs_cpu_read_size*(struct tracefs_cpu pass:[*]_tcpu_);
293*287e80b3SSadaf Ebrahimi	int *tracefs_cpu_read*(struct tracefs_cpu pass:[*]_tcpu_, void pass:[*]_buffer_, bool _nonblock_);
294*287e80b3SSadaf Ebrahimi	int *tracefs_cpu_buffered_read*(struct tracefs_cpu pass:[*]_tcpu_, void pass:[*]_buffer_, bool _nonblock_);
295*287e80b3SSadaf Ebrahimi	int *tracefs_cpu_write*(struct tracefs_cpu pass:[*]_tcpu_, int _wfd_, bool _nonblock_);
296*287e80b3SSadaf Ebrahimi	int *tracefs_cpu_stop*(struct tracefs_cpu pass:[*]_tcpu_);
297*287e80b3SSadaf Ebrahimi	int *tracefs_cpu_flush*(struct tracefs_cpu pass:[*]_tcpu_, void pass:[*]_buffer_);
298*287e80b3SSadaf Ebrahimi	int *tracefs_cpu_flush_write*(struct tracefs_cpu pass:[*]_tcpu_, int _wfd_);
299*287e80b3SSadaf Ebrahimi	int *tracefs_cpu_pipe*(struct tracefs_cpu pass:[*]_tcpu_, int _wfd_, bool _nonblock_);
300*287e80b3SSadaf Ebrahimi
301*287e80b3SSadaf Ebrahimi--
302*287e80b3SSadaf Ebrahimi
303*287e80b3SSadaf EbrahimiDESCRIPTION
304*287e80b3SSadaf Ebrahimi-----------
305*287e80b3SSadaf EbrahimiThe libtracefs(3) library provides APIs to access kernel trace file system.
306*287e80b3SSadaf Ebrahimi
307*287e80b3SSadaf EbrahimiFILES
308*287e80b3SSadaf Ebrahimi-----
309*287e80b3SSadaf Ebrahimi[verse]
310*287e80b3SSadaf Ebrahimi--
311*287e80b3SSadaf Ebrahimi*tracefs.h*
312*287e80b3SSadaf Ebrahimi	Header file to include in order to have access to the library APIs.
313*287e80b3SSadaf Ebrahimi*-ltracefs*
314*287e80b3SSadaf Ebrahimi	Linker switch to add when building a program that uses the library.
315*287e80b3SSadaf Ebrahimi--
316*287e80b3SSadaf Ebrahimi
317*287e80b3SSadaf EbrahimiSEE ALSO
318*287e80b3SSadaf Ebrahimi--------
319*287e80b3SSadaf Ebrahimi*libtraceevent*(3),
320*287e80b3SSadaf Ebrahimi*trace-cmd*(1)
321*287e80b3SSadaf Ebrahimi
322*287e80b3SSadaf EbrahimiAUTHOR
323*287e80b3SSadaf Ebrahimi------
324*287e80b3SSadaf Ebrahimi[verse]
325*287e80b3SSadaf Ebrahimi--
326*287e80b3SSadaf Ebrahimi*Steven Rostedt* <[email protected]>
327*287e80b3SSadaf Ebrahimi*Tzvetomir Stoyanov* <[email protected]>
328*287e80b3SSadaf Ebrahimi--
329*287e80b3SSadaf EbrahimiREPORTING BUGS
330*287e80b3SSadaf Ebrahimi--------------
331*287e80b3SSadaf EbrahimiReport bugs to  <[email protected]>
332*287e80b3SSadaf Ebrahimi
333*287e80b3SSadaf EbrahimiLICENSE
334*287e80b3SSadaf Ebrahimi-------
335*287e80b3SSadaf Ebrahimilibtracefs is Free Software licensed under the GNU LGPL 2.1
336*287e80b3SSadaf Ebrahimi
337*287e80b3SSadaf EbrahimiRESOURCES
338*287e80b3SSadaf Ebrahimi---------
339*287e80b3SSadaf Ebrahimihttps://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/
340*287e80b3SSadaf Ebrahimi
341*287e80b3SSadaf EbrahimiCOPYING
342*287e80b3SSadaf Ebrahimi-------
343*287e80b3SSadaf EbrahimiCopyright \(C) 2020 VMware, Inc. Free use of this software is granted under
344*287e80b3SSadaf Ebrahimithe terms of the GNU Public License (GPL).
345