18c2ecf20Sopenharmony_ci#!/bin/sh 28c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 38c2ecf20Sopenharmony_ci# description: Test ftrace direct functions against tracers 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_cirmmod ftrace-direct ||: 68c2ecf20Sopenharmony_ciif ! modprobe ftrace-direct ; then 78c2ecf20Sopenharmony_ci echo "No ftrace-direct sample module - please make CONFIG_SAMPLE_FTRACE_DIRECT=m" 88c2ecf20Sopenharmony_ci exit_unresolved; 98c2ecf20Sopenharmony_cifi 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ciecho "Let the module run a little" 128c2ecf20Sopenharmony_cisleep 1 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_cigrep -q "my_direct_func: waking up" trace 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_cirmmod ftrace-direct 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_citest_tracer() { 198c2ecf20Sopenharmony_ci tracer=$1 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci # tracer -> direct -> no direct > no tracer 228c2ecf20Sopenharmony_ci echo $tracer > current_tracer 238c2ecf20Sopenharmony_ci modprobe ftrace-direct 248c2ecf20Sopenharmony_ci rmmod ftrace-direct 258c2ecf20Sopenharmony_ci echo nop > current_tracer 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci # tracer -> direct -> no tracer > no direct 288c2ecf20Sopenharmony_ci echo $tracer > current_tracer 298c2ecf20Sopenharmony_ci modprobe ftrace-direct 308c2ecf20Sopenharmony_ci echo nop > current_tracer 318c2ecf20Sopenharmony_ci rmmod ftrace-direct 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci # direct -> tracer -> no tracer > no direct 348c2ecf20Sopenharmony_ci modprobe ftrace-direct 358c2ecf20Sopenharmony_ci echo $tracer > current_tracer 368c2ecf20Sopenharmony_ci echo nop > current_tracer 378c2ecf20Sopenharmony_ci rmmod ftrace-direct 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci # direct -> tracer -> no direct > no notracer 408c2ecf20Sopenharmony_ci modprobe ftrace-direct 418c2ecf20Sopenharmony_ci echo $tracer > current_tracer 428c2ecf20Sopenharmony_ci rmmod ftrace-direct 438c2ecf20Sopenharmony_ci echo nop > current_tracer 448c2ecf20Sopenharmony_ci} 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_cifor t in `cat available_tracers`; do 478c2ecf20Sopenharmony_ci if [ "$t" != "nop" ]; then 488c2ecf20Sopenharmony_ci test_tracer $t 498c2ecf20Sopenharmony_ci fi 508c2ecf20Sopenharmony_cidone 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ciecho nop > current_tracer 538c2ecf20Sopenharmony_cirmmod ftrace-direct ||: 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_ci# Now do the same thing with another direct function registered 568c2ecf20Sopenharmony_ciecho "Running with another ftrace direct function" 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_cirmmod ftrace-direct-too ||: 598c2ecf20Sopenharmony_cimodprobe ftrace-direct-too 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_cifor t in `cat available_tracers`; do 628c2ecf20Sopenharmony_ci if [ "$t" != "nop" ]; then 638c2ecf20Sopenharmony_ci test_tracer $t 648c2ecf20Sopenharmony_ci fi 658c2ecf20Sopenharmony_cidone 668c2ecf20Sopenharmony_ci 678c2ecf20Sopenharmony_ciecho nop > current_tracer 688c2ecf20Sopenharmony_cirmmod ftrace-direct ||: 698c2ecf20Sopenharmony_cirmmod ftrace-direct-too ||: 70