OSDN Git Service

ftrace/selftests: Update the direct call selftests to test two direct calls
authorSteven Rostedt (VMware) <rostedt@goodmis.org>
Fri, 8 Nov 2019 21:08:12 +0000 (16:08 -0500)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Wed, 13 Nov 2019 14:36:49 +0000 (09:36 -0500)
The register_ftrace_direct() takes a different path if there's already a
direct call registered, but this was not tested in the self tests. Now that
there's a second direct caller test module, we can use this to test not only
one direct caller, but two.

Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
tools/testing/selftests/ftrace/test.d/direct/ftrace-direct.tc
tools/testing/selftests/ftrace/test.d/direct/kprobe-direct.tc

index 8b8ed3c..cbc7a30 100644 (file)
@@ -51,3 +51,19 @@ done
 
 echo nop > current_tracer
 rmmod ftrace-direct ||:
+
+# Now do the same thing with another direct function registered
+echo "Running with another ftrace direct function"
+
+rmmod ftrace-direct-too ||:
+modprobe ftrace-direct-too
+
+for t in `cat available_tracers`; do
+       if [ "$t" != "nop" ]; then
+               test_tracer $t
+       fi
+done
+
+echo nop > current_tracer
+rmmod ftrace-direct ||:
+rmmod ftrace-direct-too ||:
index f030dc8..017a740 100644 (file)
@@ -44,28 +44,41 @@ disable_probe() {
        echo 0 > events/kprobes/kwake/enable
 }
 
-# probe -> direct -> no direct > no probe
-enable_probe
-start_direct
-stop_direct
-disable_probe
-
-# probe -> direct -> no probe > no direct
-enable_probe
-start_direct
-disable_probe
-stop_direct
-
-# direct -> probe -> no probe > no direct
-start_direct
-enable_probe
-disable_probe
-stop_direct
-
-# direct -> probe -> no direct > no noprobe
-start_direct
-enable_probe
-stop_direct
-disable_probe
+test_kprobes() {
+       # probe -> direct -> no direct > no probe
+       enable_probe
+       start_direct
+       stop_direct
+       disable_probe
+
+       # probe -> direct -> no probe > no direct
+       enable_probe
+       start_direct
+       disable_probe
+       stop_direct
+
+       # direct -> probe -> no probe > no direct
+       start_direct
+       enable_probe
+       disable_probe
+       stop_direct
+
+       # direct -> probe -> no direct > no noprobe
+       start_direct
+       enable_probe
+       stop_direct
+       disable_probe
+}
+
+test_kprobes
+
+# Now do this with a second registered direct function
+echo "Running with another ftrace direct function"
+
+modprobe ftrace-direct-too
+
+test_kprobes
+
+rmmod ftrace-direct-too
 
 echo > kprobe_events