@@ -48,6 +48,7 @@ struct perf_ftrace {
48
48
int graph_nosleep_time ;
49
49
int graph_noirqs ;
50
50
int graph_verbose ;
51
+ int graph_thresh ;
51
52
};
52
53
53
54
struct filter_entry {
@@ -234,6 +235,9 @@ static int reset_tracing_files(struct perf_ftrace *ftrace __maybe_unused)
234
235
if (write_tracing_file ("max_graph_depth" , "0" ) < 0 )
235
236
return -1 ;
236
237
238
+ if (write_tracing_file ("tracing_thresh" , "0" ) < 0 )
239
+ return -1 ;
240
+
237
241
reset_tracing_filters ();
238
242
reset_tracing_options (ftrace );
239
243
return 0 ;
@@ -446,6 +450,20 @@ static int set_tracing_funcgraph_verbose(struct perf_ftrace *ftrace)
446
450
return 0 ;
447
451
}
448
452
453
+ static int set_tracing_thresh (struct perf_ftrace * ftrace )
454
+ {
455
+ int ret ;
456
+
457
+ if (ftrace -> graph_thresh == 0 )
458
+ return 0 ;
459
+
460
+ ret = write_tracing_file_int ("tracing_thresh" , ftrace -> graph_thresh );
461
+ if (ret < 0 )
462
+ return ret ;
463
+
464
+ return 0 ;
465
+ }
466
+
449
467
static int __cmd_ftrace (struct perf_ftrace * ftrace , int argc , const char * * argv )
450
468
{
451
469
char * trace_file ;
@@ -545,6 +563,11 @@ static int __cmd_ftrace(struct perf_ftrace *ftrace, int argc, const char **argv)
545
563
goto out_reset ;
546
564
}
547
565
566
+ if (set_tracing_thresh (ftrace ) < 0 ) {
567
+ pr_err ("failed to set tracing thresh\n" );
568
+ goto out_reset ;
569
+ }
570
+
548
571
if (write_tracing_file ("current_tracer" , ftrace -> tracer ) < 0 ) {
549
572
pr_err ("failed to set current_tracer to %s\n" , ftrace -> tracer );
550
573
goto out_reset ;
@@ -727,6 +750,7 @@ static int parse_graph_tracer_opts(const struct option *opt,
727
750
{ .name = "nosleep-time" , .value_ptr = & ftrace -> graph_nosleep_time },
728
751
{ .name = "noirqs" , .value_ptr = & ftrace -> graph_noirqs },
729
752
{ .name = "verbose" , .value_ptr = & ftrace -> graph_verbose },
753
+ { .name = "thresh" , .value_ptr = & ftrace -> graph_thresh },
730
754
{ .name = NULL , }
731
755
};
732
756
@@ -798,7 +822,7 @@ int cmd_ftrace(int argc, const char **argv)
798
822
OPT_INTEGER ('D' , "graph-depth" , & ftrace .graph_depth ,
799
823
"Max depth for function graph tracer" ),
800
824
OPT_CALLBACK (0 , "graph-opts" , & ftrace , "options" ,
801
- "graph tracer options, available options: nosleep-time,noirqs,verbose" ,
825
+ "graph tracer options, available options: nosleep-time,noirqs,verbose,thresh=<n> " ,
802
826
parse_graph_tracer_opts ),
803
827
OPT_CALLBACK ('m' , "buffer-size" , & ftrace .percpu_buffer_size , "size" ,
804
828
"size of per cpu buffer" , parse_buffer_size ),
0 commit comments