selftests/ftrace: Add function_graph tracer to func-filter-pid test

The function tracer is tested to see if pid filtering works. Add a test to
test function_graph tracer as well, but only if the function_graph tracer
is enabled for the top level or instance.

Link: https://lore.kernel.org/linux-trace-kernel/20240603190825.083048115@goodmis.org

Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Alexei Starovoitov <alexei.starovoitov@gmail.com>
Cc: Florent Revest <revest@chromium.org>
Cc: Martin KaFai Lau <martin.lau@linux.dev>
Cc: bpf <bpf@vger.kernel.org>
Cc: Sven Schnelle <svens@linux.ibm.com>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Alan Maguire <alan.maguire@oracle.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Guo Ren <guoren@kernel.org>
Reviewed-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
parent fe835e3c
...@@ -14,6 +14,11 @@ if [ ! -f options/function-fork ]; then ...@@ -14,6 +14,11 @@ if [ ! -f options/function-fork ]; then
echo "no option for function-fork found. Option will not be tested." echo "no option for function-fork found. Option will not be tested."
fi fi
if [ ! -f options/funcgraph-proc ]; then
do_funcgraph_proc=0
echo "no option for function-fork found. Option will not be tested."
fi
read PID _ < /proc/self/stat read PID _ < /proc/self/stat
if [ $do_function_fork -eq 1 ]; then if [ $do_function_fork -eq 1 ]; then
...@@ -21,12 +26,18 @@ if [ $do_function_fork -eq 1 ]; then ...@@ -21,12 +26,18 @@ if [ $do_function_fork -eq 1 ]; then
orig_value=`grep function-fork trace_options` orig_value=`grep function-fork trace_options`
fi fi
if [ $do_funcgraph_proc -eq 1 ]; then
orig_value2=`cat options/funcgraph-proc`
fi
do_reset() { do_reset() {
if [ $do_function_fork -eq 0 ]; then if [ $do_function_fork -eq 1 ]; then
return echo $orig_value > trace_options
fi fi
echo $orig_value > trace_options if [ $do_funcgraph_proc -eq 1 ]; then
echo $orig_value2 > options/funcgraph-proc
fi
} }
fail() { # msg fail() { # msg
...@@ -36,13 +47,15 @@ fail() { # msg ...@@ -36,13 +47,15 @@ fail() { # msg
} }
do_test() { do_test() {
TRACER=$1
disable_tracing disable_tracing
echo do_execve* > set_ftrace_filter echo do_execve* > set_ftrace_filter
echo $FUNCTION_FORK >> set_ftrace_filter echo $FUNCTION_FORK >> set_ftrace_filter
echo $PID > set_ftrace_pid echo $PID > set_ftrace_pid
echo function > current_tracer echo $TRACER > current_tracer
if [ $do_function_fork -eq 1 ]; then if [ $do_function_fork -eq 1 ]; then
# don't allow children to be traced # don't allow children to be traced
...@@ -82,7 +95,11 @@ do_test() { ...@@ -82,7 +95,11 @@ do_test() {
fi fi
} }
do_test do_test function
if grep -s function_graph available_tracers; then
do_test function_graph
fi
do_reset do_reset
exit 0 exit 0
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment