Lines Matching refs:tr
40 static void stop_irqsoff_tracer(struct trace_array *tr, int graph);
41 static int start_irqsoff_tracer(struct trace_array *tr, int graph);
65 static int irqsoff_display_graph(struct trace_array *tr, int set);
66 # define is_graph(tr) ((tr)->trace_flags & TRACE_ITER_DISPLAY_GRAPH) argument
68 static inline int irqsoff_display_graph(struct trace_array *tr, int set) in irqsoff_display_graph() argument
72 # define is_graph(tr) false argument
99 static int func_prolog_dec(struct trace_array *tr, in func_prolog_dec() argument
125 *data = per_cpu_ptr(tr->array_buffer.data, cpu); in func_prolog_dec()
143 struct trace_array *tr = irqsoff_trace; in irqsoff_tracer_call() local
148 if (!func_prolog_dec(tr, &data, &flags)) in irqsoff_tracer_call()
153 trace_function(tr, ip, parent_ip, trace_ctx, fregs); in irqsoff_tracer_call()
160 static int irqsoff_display_graph(struct trace_array *tr, int set) in irqsoff_display_graph() argument
164 if (!(is_graph(tr) ^ set)) in irqsoff_display_graph()
172 tr->max_latency = 0; in irqsoff_display_graph()
182 struct trace_array *tr = irqsoff_trace; in irqsoff_graph_entry() local
201 if (!func_prolog_dec(tr, &data, &flags)) in irqsoff_graph_entry()
211 ret = __trace_graph_entry(tr, trace, trace_ctx); in irqsoff_graph_entry()
221 struct trace_array *tr = irqsoff_trace; in irqsoff_graph_return() local
231 if (!func_prolog_dec(tr, &data, &flags)) in irqsoff_graph_return()
240 __trace_graph_return(tr, trace, trace_ctx, *calltime, rettime); in irqsoff_graph_return()
251 if (is_graph(iter->tr)) in irqsoff_trace_open()
272 if (is_graph(iter->tr)) in irqsoff_print_line()
280 struct trace_array *tr = irqsoff_trace; in irqsoff_print_header() local
282 if (is_graph(tr)) in irqsoff_print_header()
289 __trace_function(struct trace_array *tr, in __trace_function() argument
293 if (is_graph(tr)) in __trace_function()
294 trace_graph_function(tr, ip, parent_ip, trace_ctx); in __trace_function()
296 trace_function(tr, ip, parent_ip, trace_ctx, NULL); in __trace_function()
301 __trace_function(struct trace_array *tr, in __trace_function() argument
305 return trace_function(tr, ip, parent_ip, trace_ctx, NULL); in __trace_function()
332 static bool report_latency(struct trace_array *tr, u64 delta) in report_latency() argument
338 if (delta <= tr->max_latency) in report_latency()
345 check_critical_timing(struct trace_array *tr, in check_critical_timing() argument
360 if (!report_latency(tr, delta)) in check_critical_timing()
366 if (!report_latency(tr, delta)) in check_critical_timing()
369 __trace_function(tr, CALLER_ADDR0, parent_ip, trace_ctx); in check_critical_timing()
371 __trace_stack(tr, trace_ctx, 5); in check_critical_timing()
379 tr->max_latency = delta; in check_critical_timing()
380 update_max_tr_single(tr, current, cpu); in check_critical_timing()
391 __trace_function(tr, CALLER_ADDR0, parent_ip, trace_ctx); in check_critical_timing()
398 struct trace_array *tr = irqsoff_trace; in start_critical_timing() local
410 data = per_cpu_ptr(tr->array_buffer.data, cpu); in start_critical_timing()
422 __trace_function(tr, ip, parent_ip, tracing_gen_ctx()); in start_critical_timing()
434 struct trace_array *tr = irqsoff_trace; in stop_critical_timing() local
449 data = per_cpu_ptr(tr->array_buffer.data, cpu); in stop_critical_timing()
459 __trace_function(tr, ip, parent_ip, trace_ctx); in stop_critical_timing()
460 check_critical_timing(tr, data, parent_ip ? : ip, cpu); in stop_critical_timing()
487 static int register_irqsoff_function(struct trace_array *tr, int graph, int set) in register_irqsoff_function() argument
492 if (function_enabled || (!set && !(tr->trace_flags & TRACE_ITER_FUNCTION))) in register_irqsoff_function()
498 ret = register_ftrace_function(tr->ops); in register_irqsoff_function()
506 static void unregister_irqsoff_function(struct trace_array *tr, int graph) in unregister_irqsoff_function() argument
514 unregister_ftrace_function(tr->ops); in unregister_irqsoff_function()
519 static int irqsoff_function_set(struct trace_array *tr, u32 mask, int set) in irqsoff_function_set() argument
525 register_irqsoff_function(tr, is_graph(tr), 1); in irqsoff_function_set()
527 unregister_irqsoff_function(tr, is_graph(tr)); in irqsoff_function_set()
531 static int register_irqsoff_function(struct trace_array *tr, int graph, int set) in register_irqsoff_function() argument
535 static void unregister_irqsoff_function(struct trace_array *tr, int graph) { } in unregister_irqsoff_function() argument
536 static inline int irqsoff_function_set(struct trace_array *tr, u32 mask, int set) in irqsoff_function_set() argument
542 static int irqsoff_flag_changed(struct trace_array *tr, u32 mask, int set) in irqsoff_flag_changed() argument
544 struct tracer *tracer = tr->current_trace; in irqsoff_flag_changed()
546 if (irqsoff_function_set(tr, mask, set)) in irqsoff_flag_changed()
551 return irqsoff_display_graph(tr, set); in irqsoff_flag_changed()
557 static int start_irqsoff_tracer(struct trace_array *tr, int graph) in start_irqsoff_tracer() argument
561 ret = register_irqsoff_function(tr, graph, 0); in start_irqsoff_tracer()
571 static void stop_irqsoff_tracer(struct trace_array *tr, int graph) in stop_irqsoff_tracer() argument
575 unregister_irqsoff_function(tr, graph); in stop_irqsoff_tracer()
580 static int __irqsoff_tracer_init(struct trace_array *tr) in __irqsoff_tracer_init() argument
585 save_flags = tr->trace_flags; in __irqsoff_tracer_init()
588 set_tracer_flag(tr, TRACE_ITER_OVERWRITE, 1); in __irqsoff_tracer_init()
589 set_tracer_flag(tr, TRACE_ITER_LATENCY_FMT, 1); in __irqsoff_tracer_init()
591 set_tracer_flag(tr, TRACE_ITER_PAUSE_ON_TRACE, 1); in __irqsoff_tracer_init()
593 tr->max_latency = 0; in __irqsoff_tracer_init()
594 irqsoff_trace = tr; in __irqsoff_tracer_init()
598 ftrace_init_array_ops(tr, irqsoff_tracer_call); in __irqsoff_tracer_init()
601 if (start_irqsoff_tracer(tr, (tr->flags & TRACE_ARRAY_FL_GLOBAL && in __irqsoff_tracer_init()
602 is_graph(tr)))) in __irqsoff_tracer_init()
609 static void __irqsoff_tracer_reset(struct trace_array *tr) in __irqsoff_tracer_reset() argument
615 stop_irqsoff_tracer(tr, is_graph(tr)); in __irqsoff_tracer_reset()
617 set_tracer_flag(tr, TRACE_ITER_LATENCY_FMT, lat_flag); in __irqsoff_tracer_reset()
618 set_tracer_flag(tr, TRACE_ITER_OVERWRITE, overwrite_flag); in __irqsoff_tracer_reset()
619 set_tracer_flag(tr, TRACE_ITER_PAUSE_ON_TRACE, pause_flag); in __irqsoff_tracer_reset()
620 ftrace_reset_array_ops(tr); in __irqsoff_tracer_reset()
625 static void irqsoff_tracer_start(struct trace_array *tr) in irqsoff_tracer_start() argument
630 static void irqsoff_tracer_stop(struct trace_array *tr) in irqsoff_tracer_stop() argument
653 static int irqsoff_tracer_init(struct trace_array *tr) in irqsoff_tracer_init() argument
657 return __irqsoff_tracer_init(tr); in irqsoff_tracer_init()
660 static void irqsoff_tracer_reset(struct trace_array *tr) in irqsoff_tracer_reset() argument
662 __irqsoff_tracer_reset(tr); in irqsoff_tracer_reset()
699 static int preemptoff_tracer_init(struct trace_array *tr) in preemptoff_tracer_init() argument
703 return __irqsoff_tracer_init(tr); in preemptoff_tracer_init()
706 static void preemptoff_tracer_reset(struct trace_array *tr) in preemptoff_tracer_reset() argument
708 __irqsoff_tracer_reset(tr); in preemptoff_tracer_reset()
734 static int preemptirqsoff_tracer_init(struct trace_array *tr) in preemptirqsoff_tracer_init() argument
738 return __irqsoff_tracer_init(tr); in preemptirqsoff_tracer_init()
741 static void preemptirqsoff_tracer_reset(struct trace_array *tr) in preemptirqsoff_tracer_reset() argument
743 __irqsoff_tracer_reset(tr); in preemptirqsoff_tracer_reset()