2 # SPDX-License-Identifier: GPL-2.0
3 # description: ftrace - test for function event triggers
6 # The triggers are set within the set_ftrace_filter file
7 # requires: set_ftrace_filter
9 # Ftrace allows to add triggers to functions, such as enabling or disabling
10 # tracing, enabling or disabling trace events, or recording a stack trace
11 # within the ring buffer.
13 # This test is designed to test event triggers
30 echo "Testing function probes with events:"
32 EVENT="sched:sched_switch"
33 EVENT_ENABLE="events/sched/sched_switch/enable"
36 grep -v '^#' trace | wc -l
39 test_event_enabled() {
43 if [ "$e" != $val ]; then
44 fail "Expected $val but found $e"
48 run_enable_disable() {
52 check_enable_star=$4 # 1*
53 check_disable_star=$5 # 0*
56 if [ $cnt -ne 0 ]; then
57 fail "Found junk in trace file"
60 echo "$Enable event all the time"
62 echo $check_disable > $EVENT_ENABLE
65 test_event_enabled $check_disable
67 echo "schedule:${enable}_event:$EVENT" > set_ftrace_filter
68 if [ -d ../../instances ]; then # Check instances
69 cur=`cat set_ftrace_filter`
70 top=`cat ../../set_ftrace_filter`
71 if [ "$cur" = "$top" ]; then
72 echo "This kernel is too old to support per instance filter"
78 echo " make sure it works 5 times"
83 test_event_enabled $check_enable_star
85 echo $check_disable > $EVENT_ENABLE
88 echo " make sure it's still works"
89 test_event_enabled $check_enable_star
93 echo " make sure it only works 3 times"
95 echo $check_disable > $EVENT_ENABLE
98 echo "schedule:${enable}_event:$EVENT:3" > set_ftrace_filter
103 test_event_enabled $check_enable_star
105 echo $check_disable > $EVENT_ENABLE
109 echo " make sure it stop working"
110 test_event_enabled $check_disable_star
115 run_enable_disable enable Enable 0 "1*" "0*"
116 run_enable_disable disable Disable 1 "0*" "1*"