Commit aaac2820 authored by Steven Rostedt (VMware)'s avatar Steven Rostedt (VMware)
Browse files

selftests/ftrace: Add clear_dynamic_events() to test cases

Add a function to remove all dynamic events from the tracing directory. It
requires a loop as some of the dynamic events may depend on others being
removed first. Also add a safety that prevents it from looping infinitely
due to a bug where an event never gets removed.

Link: https://lkml.kernel.org/r/20210819152825.348941368@goodmis.org



Cc: "Tzvetomir Stoyanov" <tz.stoyanov@gmail.com>
Cc: Tom Zanussi <zanussi@kernel.org>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Shuah Khan <skhan@linuxfoundation.org>
Cc: linux-kselftest@vger.kernel.org
Acked-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
parent 7491e2c4
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -83,6 +83,27 @@ clear_synthetic_events() { # reset all current synthetic events
    done
}

clear_dynamic_events() { # reset all current dynamic events
    again=1
    stop=1
    # loop mulitple times as some events require other to be removed first
    while [ $again -eq 1 ]; do
	stop=$((stop+1))
	# Prevent infinite loops
	if [ $stop -gt 10 ]; then
	    break;
	fi
	again=2
	grep -v '^#' dynamic_events|
	while read line; do
	    del=`echo $line | sed -e 's/^.\([^ ]*\).*/-\1/'`
	    if ! echo "$del" >> dynamic_events; then
		again=1
	    fi
	done
    done
}

initialize_ftrace() { # Reset ftrace to initial-state
# As the initial state, ftrace will be set to nop tracer,
# no events, no triggers, no filters, no function filters,
@@ -93,6 +114,7 @@ initialize_ftrace() { # Reset ftrace to initial-state
    reset_events_filter
    reset_ftrace_filter
    disable_events
    clear_dynamic_events
    [ -f set_event_pid ] && echo > set_event_pid
    [ -f set_ftrace_pid ] && echo > set_ftrace_pid
    [ -f set_ftrace_notrace ] && echo > set_ftrace_notrace