• Home
  • Raw
  • Download

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_instance_stop - stop tracing a given rtla instance
204 return tracefs_trace_off(trace->inst); in trace_instance_stop()
208 * trace_events_free - free a list of trace events
218 tevent = tevent->next; in trace_events_free()
220 if (free_event->filter) in trace_events_free()
221 free(free_event->filter); in trace_events_free()
222 if (free_event->trigger) in trace_events_free()
223 free(free_event->trigger); in trace_events_free()
224 free(free_event->system); in trace_events_free()
230 * trace_event_alloc - alloc and parse a single trace event
240 tevent->system = strdup(event_string); in trace_event_alloc()
241 if (!tevent->system) { in trace_event_alloc()
246 tevent->event = strstr(tevent->system, ":"); in trace_event_alloc()
247 if (tevent->event) { in trace_event_alloc()
248 *tevent->event = '\0'; in trace_event_alloc()
249 tevent->event = &tevent->event[1]; in trace_event_alloc()
256 * trace_event_add_filter - record an event filter
260 if (event->filter) in trace_event_add_filter()
261 free(event->filter); in trace_event_add_filter()
263 event->filter = strdup(filter); in trace_event_add_filter()
264 if (!event->filter) in trace_event_add_filter()
271 * trace_event_add_trigger - record an event trigger action
273 int trace_event_add_trigger(struct trace_events *event, char *trigger) in trace_event_add_trigger() argument
275 if (event->trigger) in trace_event_add_trigger()
276 free(event->trigger); in trace_event_add_trigger()
278 event->trigger = strdup(trigger); in trace_event_add_trigger()
279 if (!event->trigger) in trace_event_add_trigger()
286 * trace_event_disable_filter - disable an event filter
294 if (!tevent->filter) in trace_event_disable_filter()
297 if (!tevent->filter_enabled) in trace_event_disable_filter()
300 debug_msg("Disabling %s:%s filter %s\n", tevent->system, in trace_event_disable_filter()
301 tevent->event ? : "*", tevent->filter); in trace_event_disable_filter()
303 snprintf(filter, 1024, "!%s\n", tevent->filter); in trace_event_disable_filter()
305 retval = tracefs_event_file_write(instance->inst, tevent->system, in trace_event_disable_filter()
306 tevent->event, "filter", filter); in trace_event_disable_filter()
308 err_msg("Error disabling %s:%s filter %s\n", tevent->system, in trace_event_disable_filter()
309 tevent->event ? : "*", tevent->filter); in trace_event_disable_filter()
313 * trace_event_save_hist - save the content of an event hist
315 * If the trigger is a hist: one, save the content of the hist file.
328 /* trigger enables hist */ in trace_event_save_hist()
329 if (!tevent->trigger) in trace_event_save_hist()
332 /* is this a hist: trigger? */ in trace_event_save_hist()
333 retval = strncmp(tevent->trigger, "hist:", strlen("hist:")); in trace_event_save_hist()
337 snprintf(path, 1024, "%s_%s_hist.txt", tevent->system, tevent->event); in trace_event_save_hist()
339 printf(" Saving event %s:%s hist to %s\n", tevent->system, tevent->event, path); in trace_event_save_hist()
347 hist = tracefs_event_file_read(instance->inst, tevent->system, tevent->event, "hist", 0); in trace_event_save_hist()
349 err_msg(" Failed to read %s:%s hist file\n", tevent->system, tevent->event); in trace_event_save_hist()
355 index += write(out_fd, &hist[index], strlen(hist) - index); in trace_event_save_hist()
364 * trace_event_disable_trigger - disable an event trigger
369 char trigger[1024]; in trace_event_disable_trigger() local
372 if (!tevent->trigger) in trace_event_disable_trigger()
375 if (!tevent->trigger_enabled) in trace_event_disable_trigger()
378 debug_msg("Disabling %s:%s trigger %s\n", tevent->system, in trace_event_disable_trigger()
379 tevent->event ? : "*", tevent->trigger); in trace_event_disable_trigger()
383 snprintf(trigger, 1024, "!%s\n", tevent->trigger); in trace_event_disable_trigger()
385 retval = tracefs_event_file_write(instance->inst, tevent->system, in trace_event_disable_trigger()
386 tevent->event, "trigger", trigger); in trace_event_disable_trigger()
388 err_msg("Error disabling %s:%s trigger %s\n", tevent->system, in trace_event_disable_trigger()
389 tevent->event ? : "*", tevent->trigger); in trace_event_disable_trigger()
393 * trace_events_disable - disable all trace events
404 debug_msg("Disabling event %s:%s\n", tevent->system, tevent->event ? : "*"); in trace_events_disable()
405 if (tevent->enabled) { in trace_events_disable()
408 tracefs_event_disable(instance->inst, tevent->system, tevent->event); in trace_events_disable()
411 tevent->enabled = 0; in trace_events_disable()
412 tevent = tevent->next; in trace_events_disable()
417 * trace_event_enable_filter - enable an event filter associated with an event
425 if (!tevent->filter) in trace_event_enable_filter()
428 if (!tevent->event) { in trace_event_enable_filter()
429 err_msg("Filter %s applies only for single events, not for all %s:* events\n", in trace_event_enable_filter()
430 tevent->filter, tevent->system); in trace_event_enable_filter()
434 snprintf(filter, 1024, "%s\n", tevent->filter); in trace_event_enable_filter()
436 debug_msg("Enabling %s:%s filter %s\n", tevent->system, in trace_event_enable_filter()
437 tevent->event ? : "*", tevent->filter); in trace_event_enable_filter()
439 retval = tracefs_event_file_write(instance->inst, tevent->system, in trace_event_enable_filter()
440 tevent->event, "filter", filter); in trace_event_enable_filter()
442 err_msg("Error enabling %s:%s filter %s\n", tevent->system, in trace_event_enable_filter()
443 tevent->event ? : "*", tevent->filter); in trace_event_enable_filter()
447 tevent->filter_enabled = 1; in trace_event_enable_filter()
452 * trace_event_enable_trigger - enable an event trigger associated with an event
457 char trigger[1024]; in trace_event_enable_trigger() local
460 if (!tevent->trigger) in trace_event_enable_trigger()
463 if (!tevent->event) { in trace_event_enable_trigger()
464 err_msg("Trigger %s applies only for single events, not for all %s:* events\n", in trace_event_enable_trigger()
465 tevent->trigger, tevent->system); in trace_event_enable_trigger()
469 snprintf(trigger, 1024, "%s\n", tevent->trigger); in trace_event_enable_trigger()
471 debug_msg("Enabling %s:%s trigger %s\n", tevent->system, in trace_event_enable_trigger()
472 tevent->event ? : "*", tevent->trigger); in trace_event_enable_trigger()
474 retval = tracefs_event_file_write(instance->inst, tevent->system, in trace_event_enable_trigger()
475 tevent->event, "trigger", trigger); in trace_event_enable_trigger()
477 err_msg("Error enabling %s:%s trigger %s\n", tevent->system, in trace_event_enable_trigger()
478 tevent->event ? : "*", tevent->trigger); in trace_event_enable_trigger()
482 tevent->trigger_enabled = 1; in trace_event_enable_trigger()
488 * trace_events_enable - enable all events
497 debug_msg("Enabling event %s:%s\n", tevent->system, tevent->event ? : "*"); in trace_events_enable()
498 retval = tracefs_event_enable(instance->inst, tevent->system, tevent->event); in trace_events_enable()
500 err_msg("Error enabling event %s:%s\n", tevent->system, in trace_events_enable()
501 tevent->event ? : "*"); in trace_events_enable()
513 tevent->enabled = 1; in trace_events_enable()
514 tevent = tevent->next; in trace_events_enable()
521 * trace_events_destroy - disable and free all trace events
539 if (!tracefs_trace_is_on(tool->inst)) in trace_is_off()
543 * The trace instance is only enabled when -t is set. IOW, when the system in trace_is_off()
546 if (trace && !tracefs_trace_is_on(trace->inst)) in trace_is_off()