ftrace: Create separate t_func_next() to simplify the function / hash logic
authorSteven Rostedt (VMware) <rostedt@goodmis.org>
Thu, 30 Mar 2017 02:45:18 +0000 (22:45 -0400)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Fri, 31 Mar 2017 22:00:45 +0000 (18:00 -0400)
commit5bd84629a7a0e2462c28ca52e213ebe27fadfee8
tree9fef370dae724a4822358278d0591ba5da1c3a4f
parent43ff926a0c3a0cfd6aa313c3232420f009ab43e8
ftrace: Create separate t_func_next() to simplify the function / hash logic

I noticed that if I use dd to read the set_ftrace_filter file that the first
hash command is repeated.

 # cd /sys/kernel/debug/tracing
 # echo schedule > set_ftrace_filter
 # echo do_IRQ >> set_ftrace_filter
 # echo schedule:traceoff >> set_ftrace_filter
 # echo do_IRQ:traceoff >> set_ftrace_filter

 # cat set_ftrace_filter
 schedule
 do_IRQ
 schedule:traceoff:unlimited
 do_IRQ:traceoff:unlimited

 # dd if=set_ftrace_filter bs=1
 schedule
 do_IRQ
 schedule:traceoff:unlimited
 schedule:traceoff:unlimited
 do_IRQ:traceoff:unlimited
 98+0 records in
 98+0 records out
 98 bytes copied, 0.00265011 s, 37.0 kB/s

This is due to the way t_start() calls t_next() as well as the seq_file
calls t_next() and the state is slightly different between the two. Namely,
t_start() will call t_next() with a local "pos" variable.

By separating out the function listing from t_next() into its own function,
we can have better control of outputting the functions and the hash of
triggers. This simplifies the code.

Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
kernel/trace/ftrace.c