]> git.ipfire.org Git - thirdparty/linux.git/blob - tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter-stack.tc
Merge tag 'drm/tegra/for-5.7-fixes' of git://anongit.freedesktop.org/tegra/linux...
[thirdparty/linux.git] / tools / testing / selftests / ftrace / test.d / ftrace / fgraph-filter-stack.tc
1 #!/bin/sh
2 # SPDX-License-Identifier: GPL-2.0
3 # description: ftrace - function graph filters with stack tracer
4
5 # Make sure that function graph filtering works, and is not
6 # affected by other tracers enabled (like stack tracer)
7
8 if ! grep -q function_graph available_tracers; then
9 echo "no function graph tracer configured"
10 exit_unsupported
11 fi
12
13 check_filter_file set_ftrace_filter
14
15 do_reset() {
16 if [ -e /proc/sys/kernel/stack_tracer_enabled ]; then
17 echo 0 > /proc/sys/kernel/stack_tracer_enabled
18 fi
19 }
20
21 fail() { # msg
22 do_reset
23 echo $1
24 exit_fail
25 }
26
27 disable_tracing
28 clear_trace;
29
30 # filter something, schedule is always good
31 if ! echo "schedule" > set_ftrace_filter; then
32 # test for powerpc 64
33 if ! echo ".schedule" > set_ftrace_filter; then
34 fail "can not enable schedule filter"
35 fi
36 fi
37
38 echo function_graph > current_tracer
39
40 if [ ! -f stack_trace ]; then
41 echo "Stack tracer not configured"
42 do_reset
43 exit_unsupported;
44 fi
45
46 echo "Now testing with stack tracer"
47
48 echo 1 > /proc/sys/kernel/stack_tracer_enabled
49
50 disable_tracing
51 clear_trace
52 enable_tracing
53 sleep 1
54
55 count=`cat trace | grep '()' | grep -v schedule | wc -l`
56
57 if [ $count -ne 0 ]; then
58 fail "Graph filtering not working with stack tracer?"
59 fi
60
61 # Make sure we did find something
62 count=`cat trace | grep 'schedule()' | wc -l`
63 if [ $count -eq 0 ]; then
64 fail "No schedule traces found?"
65 fi
66
67 echo 0 > /proc/sys/kernel/stack_tracer_enabled
68 clear_trace
69 sleep 1
70
71
72 count=`cat trace | grep '()' | grep -v schedule | wc -l`
73
74 if [ $count -ne 0 ]; then
75 fail "Graph filtering not working after stack tracer disabled?"
76 fi
77
78 count=`cat trace | grep 'schedule()' | wc -l`
79 if [ $count -eq 0 ]; then
80 fail "No schedule traces found?"
81 fi
82
83 do_reset
84
85 exit 0