Lines Matching +full:single +full:- +full:trigger
1 // SPDX-License-Identifier: GPL-2.0
14 * enable_tracer_by_name - enable a tracer on the given instance
31 return -1; in enable_tracer_by_name()
38 * disable_tracer - set nop tracer to the insta
51 * create_instance - create a trace instance with *instance_name
59 * destroy_instance - remove a trace instance and free the data
68 * save_trace_to_file - save the trace output of the instance to the file
76 int retval = -1; in save_trace_to_file()
81 return -1; in save_trace_to_file()
109 * collect_registered_events - call the existing callback function for the event
119 struct trace_seq *s = trace->seq; in collect_registered_events()
121 if (!event->handler) in collect_registered_events()
124 event->handler(s, record, event, context); in collect_registered_events()
130 * trace_instance_destroy - destroy and free a rtla trace instance
134 if (trace->inst) { in trace_instance_destroy()
135 disable_tracer(trace->inst); in trace_instance_destroy()
136 destroy_instance(trace->inst); in trace_instance_destroy()
137 trace->inst = NULL; in trace_instance_destroy()
140 if (trace->seq) { in trace_instance_destroy()
141 free(trace->seq); in trace_instance_destroy()
142 trace->seq = NULL; in trace_instance_destroy()
145 if (trace->tep) { in trace_instance_destroy()
146 tep_free(trace->tep); in trace_instance_destroy()
147 trace->tep = NULL; in trace_instance_destroy()
152 * trace_instance_init - create an rtla trace instance
164 trace->seq = calloc(1, sizeof(*trace->seq)); in trace_instance_init()
165 if (!trace->seq) in trace_instance_init()
168 trace_seq_init(trace->seq); in trace_instance_init()
170 trace->inst = create_instance(tool_name); in trace_instance_init()
171 if (!trace->inst) in trace_instance_init()
174 trace->tep = tracefs_local_events(NULL); in trace_instance_init()
175 if (!trace->tep) in trace_instance_init()
182 tracefs_trace_off(trace->inst); in trace_instance_init()
192 * trace_instance_start - start tracing a given rtla instance
196 return tracefs_trace_on(trace->inst); in trace_instance_start()
200 * trace_events_free - free a list of trace events
210 tevent = tevent->next; in trace_events_free()
212 if (free_event->filter) in trace_events_free()
213 free(free_event->filter); in trace_events_free()
214 if (free_event->trigger) in trace_events_free()
215 free(free_event->trigger); in trace_events_free()
216 free(free_event->system); in trace_events_free()
222 * trace_event_alloc - alloc and parse a single trace event
232 tevent->system = strdup(event_string); in trace_event_alloc()
233 if (!tevent->system) { in trace_event_alloc()
238 tevent->event = strstr(tevent->system, ":"); in trace_event_alloc()
239 if (tevent->event) { in trace_event_alloc()
240 *tevent->event = '\0'; in trace_event_alloc()
241 tevent->event = &tevent->event[1]; in trace_event_alloc()
248 * trace_event_add_filter - record an event filter
252 if (event->filter) in trace_event_add_filter()
253 free(event->filter); in trace_event_add_filter()
255 event->filter = strdup(filter); in trace_event_add_filter()
256 if (!event->filter) in trace_event_add_filter()
263 * trace_event_add_trigger - record an event trigger action
265 int trace_event_add_trigger(struct trace_events *event, char *trigger) in trace_event_add_trigger() argument
267 if (event->trigger) in trace_event_add_trigger()
268 free(event->trigger); in trace_event_add_trigger()
270 event->trigger = strdup(trigger); in trace_event_add_trigger()
271 if (!event->trigger) in trace_event_add_trigger()
278 * trace_event_disable_filter - disable an event filter
286 if (!tevent->filter) in trace_event_disable_filter()
289 if (!tevent->filter_enabled) in trace_event_disable_filter()
292 debug_msg("Disabling %s:%s filter %s\n", tevent->system, in trace_event_disable_filter()
293 tevent->event ? : "*", tevent->filter); in trace_event_disable_filter()
295 snprintf(filter, 1024, "!%s\n", tevent->filter); in trace_event_disable_filter()
297 retval = tracefs_event_file_write(instance->inst, tevent->system, in trace_event_disable_filter()
298 tevent->event, "filter", filter); in trace_event_disable_filter()
300 err_msg("Error disabling %s:%s filter %s\n", tevent->system, in trace_event_disable_filter()
301 tevent->event ? : "*", tevent->filter); in trace_event_disable_filter()
305 * trace_event_save_hist - save the content of an event hist
307 * If the trigger is a hist: one, save the content of the hist file.
320 /* trigger enables hist */ in trace_event_save_hist()
321 if (!tevent->trigger) in trace_event_save_hist()
324 /* is this a hist: trigger? */ in trace_event_save_hist()
325 retval = strncmp(tevent->trigger, "hist:", strlen("hist:")); in trace_event_save_hist()
329 snprintf(path, 1024, "%s_%s_hist.txt", tevent->system, tevent->event); in trace_event_save_hist()
331 printf(" Saving event %s:%s hist to %s\n", tevent->system, tevent->event, path); in trace_event_save_hist()
339 hist = tracefs_event_file_read(instance->inst, tevent->system, tevent->event, "hist", 0); in trace_event_save_hist()
341 err_msg(" Failed to read %s:%s hist file\n", tevent->system, tevent->event); in trace_event_save_hist()
347 index += write(out_fd, &hist[index], strlen(hist) - index); in trace_event_save_hist()
356 * trace_event_disable_trigger - disable an event trigger
361 char trigger[1024]; in trace_event_disable_trigger() local
364 if (!tevent->trigger) in trace_event_disable_trigger()
367 if (!tevent->trigger_enabled) in trace_event_disable_trigger()
370 debug_msg("Disabling %s:%s trigger %s\n", tevent->system, in trace_event_disable_trigger()
371 tevent->event ? : "*", tevent->trigger); in trace_event_disable_trigger()
375 snprintf(trigger, 1024, "!%s\n", tevent->trigger); in trace_event_disable_trigger()
377 retval = tracefs_event_file_write(instance->inst, tevent->system, in trace_event_disable_trigger()
378 tevent->event, "trigger", trigger); in trace_event_disable_trigger()
380 err_msg("Error disabling %s:%s trigger %s\n", tevent->system, in trace_event_disable_trigger()
381 tevent->event ? : "*", tevent->trigger); in trace_event_disable_trigger()
385 * trace_events_disable - disable all trace events
396 debug_msg("Disabling event %s:%s\n", tevent->system, tevent->event ? : "*"); in trace_events_disable()
397 if (tevent->enabled) { in trace_events_disable()
400 tracefs_event_disable(instance->inst, tevent->system, tevent->event); in trace_events_disable()
403 tevent->enabled = 0; in trace_events_disable()
404 tevent = tevent->next; in trace_events_disable()
409 * trace_event_enable_filter - enable an event filter associated with an event
417 if (!tevent->filter) in trace_event_enable_filter()
420 if (!tevent->event) { in trace_event_enable_filter()
421 err_msg("Filter %s applies only for single events, not for all %s:* events\n", in trace_event_enable_filter()
422 tevent->filter, tevent->system); in trace_event_enable_filter()
426 snprintf(filter, 1024, "%s\n", tevent->filter); in trace_event_enable_filter()
428 debug_msg("Enabling %s:%s filter %s\n", tevent->system, in trace_event_enable_filter()
429 tevent->event ? : "*", tevent->filter); in trace_event_enable_filter()
431 retval = tracefs_event_file_write(instance->inst, tevent->system, in trace_event_enable_filter()
432 tevent->event, "filter", filter); in trace_event_enable_filter()
434 err_msg("Error enabling %s:%s filter %s\n", tevent->system, in trace_event_enable_filter()
435 tevent->event ? : "*", tevent->filter); in trace_event_enable_filter()
439 tevent->filter_enabled = 1; in trace_event_enable_filter()
444 * trace_event_enable_trigger - enable an event trigger associated with an event
449 char trigger[1024]; in trace_event_enable_trigger() local
452 if (!tevent->trigger) in trace_event_enable_trigger()
455 if (!tevent->event) { in trace_event_enable_trigger()
456 err_msg("Trigger %s applies only for single events, not for all %s:* events\n", in trace_event_enable_trigger()
457 tevent->trigger, tevent->system); in trace_event_enable_trigger()
461 snprintf(trigger, 1024, "%s\n", tevent->trigger); in trace_event_enable_trigger()
463 debug_msg("Enabling %s:%s trigger %s\n", tevent->system, in trace_event_enable_trigger()
464 tevent->event ? : "*", tevent->trigger); in trace_event_enable_trigger()
466 retval = tracefs_event_file_write(instance->inst, tevent->system, in trace_event_enable_trigger()
467 tevent->event, "trigger", trigger); in trace_event_enable_trigger()
469 err_msg("Error enabling %s:%s trigger %s\n", tevent->system, in trace_event_enable_trigger()
470 tevent->event ? : "*", tevent->trigger); in trace_event_enable_trigger()
474 tevent->trigger_enabled = 1; in trace_event_enable_trigger()
480 * trace_events_enable - enable all events
489 debug_msg("Enabling event %s:%s\n", tevent->system, tevent->event ? : "*"); in trace_events_enable()
490 retval = tracefs_event_enable(instance->inst, tevent->system, tevent->event); in trace_events_enable()
492 err_msg("Error enabling event %s:%s\n", tevent->system, in trace_events_enable()
493 tevent->event ? : "*"); in trace_events_enable()
505 tevent->enabled = 1; in trace_events_enable()
506 tevent = tevent->next; in trace_events_enable()
513 * trace_events_destroy - disable and free all trace events
531 if (!tracefs_trace_is_on(tool->inst)) in trace_is_off()
535 * The trace instance is only enabled when -t is set. IOW, when the system in trace_is_off()
538 if (trace && !tracefs_trace_is_on(trace->inst)) in trace_is_off()