1#!/bin/sh 2# SPDX-License-Identifier: GPL-2.0 3# description: Test ftrace direct functions against tracers 4 5rmmod ftrace-direct ||: 6if ! modprobe ftrace-direct ; then 7 echo "No ftrace-direct sample module - please make CONFIG_SAMPLE_FTRACE_DIRECT=m" 8 exit_unresolved; 9fi 10 11echo "Let the module run a little" 12sleep 1 13 14grep -q "my_direct_func: waking up" trace 15 16rmmod ftrace-direct 17 18test_tracer() { 19 tracer=$1 20 21 # tracer -> direct -> no direct > no tracer 22 echo $tracer > current_tracer 23 modprobe ftrace-direct 24 rmmod ftrace-direct 25 echo nop > current_tracer 26 27 # tracer -> direct -> no tracer > no direct 28 echo $tracer > current_tracer 29 modprobe ftrace-direct 30 echo nop > current_tracer 31 rmmod ftrace-direct 32 33 # direct -> tracer -> no tracer > no direct 34 modprobe ftrace-direct 35 echo $tracer > current_tracer 36 echo nop > current_tracer 37 rmmod ftrace-direct 38 39 # direct -> tracer -> no direct > no notracer 40 modprobe ftrace-direct 41 echo $tracer > current_tracer 42 rmmod ftrace-direct 43 echo nop > current_tracer 44} 45 46for t in `cat available_tracers`; do 47 if [ "$t" != "nop" ]; then 48 test_tracer $t 49 fi 50done 51 52echo nop > current_tracer 53rmmod ftrace-direct ||: 54 55# Now do the same thing with another direct function registered 56echo "Running with another ftrace direct function" 57 58rmmod ftrace-direct-too ||: 59modprobe ftrace-direct-too 60 61for t in `cat available_tracers`; do 62 if [ "$t" != "nop" ]; then 63 test_tracer $t 64 fi 65done 66 67echo nop > current_tracer 68rmmod ftrace-direct ||: 69rmmod ftrace-direct-too ||: 70