162306a36Sopenharmony_ci#!/bin/sh 262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 362306a36Sopenharmony_ci# description: Test ftrace direct functions against tracers 462306a36Sopenharmony_ci 562306a36Sopenharmony_cirmmod ftrace-direct ||: 662306a36Sopenharmony_ciif ! modprobe ftrace-direct ; then 762306a36Sopenharmony_ci echo "No ftrace-direct sample module - please make CONFIG_SAMPLE_FTRACE_DIRECT=m" 862306a36Sopenharmony_ci exit_unresolved; 962306a36Sopenharmony_cifi 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ciecho "Let the module run a little" 1262306a36Sopenharmony_cisleep 1 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_cigrep -q "my_direct_func: waking up" trace 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_cirmmod ftrace-direct 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_citest_tracer() { 1962306a36Sopenharmony_ci tracer=$1 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci # tracer -> direct -> no direct > no tracer 2262306a36Sopenharmony_ci echo $tracer > current_tracer 2362306a36Sopenharmony_ci modprobe ftrace-direct 2462306a36Sopenharmony_ci rmmod ftrace-direct 2562306a36Sopenharmony_ci echo nop > current_tracer 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci # tracer -> direct -> no tracer > no direct 2862306a36Sopenharmony_ci echo $tracer > current_tracer 2962306a36Sopenharmony_ci modprobe ftrace-direct 3062306a36Sopenharmony_ci echo nop > current_tracer 3162306a36Sopenharmony_ci rmmod ftrace-direct 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ci # direct -> tracer -> no tracer > no direct 3462306a36Sopenharmony_ci modprobe ftrace-direct 3562306a36Sopenharmony_ci echo $tracer > current_tracer 3662306a36Sopenharmony_ci echo nop > current_tracer 3762306a36Sopenharmony_ci rmmod ftrace-direct 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci # direct -> tracer -> no direct > no notracer 4062306a36Sopenharmony_ci modprobe ftrace-direct 4162306a36Sopenharmony_ci echo $tracer > current_tracer 4262306a36Sopenharmony_ci rmmod ftrace-direct 4362306a36Sopenharmony_ci echo nop > current_tracer 4462306a36Sopenharmony_ci} 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_cifor t in `cat available_tracers`; do 4762306a36Sopenharmony_ci if [ "$t" != "nop" ]; then 4862306a36Sopenharmony_ci test_tracer $t 4962306a36Sopenharmony_ci fi 5062306a36Sopenharmony_cidone 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ciecho nop > current_tracer 5362306a36Sopenharmony_cirmmod ftrace-direct ||: 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ci# Now do the same thing with another direct function registered 5662306a36Sopenharmony_ciecho "Running with another ftrace direct function" 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_cirmmod ftrace-direct-too ||: 5962306a36Sopenharmony_cimodprobe ftrace-direct-too 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_cifor t in `cat available_tracers`; do 6262306a36Sopenharmony_ci if [ "$t" != "nop" ]; then 6362306a36Sopenharmony_ci test_tracer $t 6462306a36Sopenharmony_ci fi 6562306a36Sopenharmony_cidone 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ciecho nop > current_tracer 6862306a36Sopenharmony_cirmmod ftrace-direct ||: 6962306a36Sopenharmony_cirmmod ftrace-direct-too ||: 70