1#!/bin/sh 2# SPDX-License-Identifier: GPL-2.0 3# description: ftrace - function graph filters with stack tracer 4# requires: stack_trace set_ftrace_filter function_graph:tracer 5 6# Make sure that function graph filtering works, and is not 7# affected by other tracers enabled (like stack tracer) 8 9do_reset() { 10 if [ -e /proc/sys/kernel/stack_tracer_enabled ]; then 11 echo 0 > /proc/sys/kernel/stack_tracer_enabled 12 fi 13} 14 15fail() { # msg 16 do_reset 17 echo $1 18 exit_fail 19} 20 21disable_tracing 22clear_trace; 23 24# filter something, schedule is always good 25if ! echo "schedule" > set_ftrace_filter; then 26 # test for powerpc 64 27 if ! echo ".schedule" > set_ftrace_filter; then 28 fail "can not enable schedule filter" 29 fi 30fi 31 32echo function_graph > current_tracer 33 34echo "Now testing with stack tracer" 35 36echo 1 > /proc/sys/kernel/stack_tracer_enabled 37 38disable_tracing 39clear_trace 40enable_tracing 41sleep 1 42 43count=`cat trace | grep '()' | grep -v schedule | wc -l` 44 45if [ $count -ne 0 ]; then 46 fail "Graph filtering not working with stack tracer?" 47fi 48 49# Make sure we did find something 50count=`cat trace | grep 'schedule()' | wc -l` 51if [ $count -eq 0 ]; then 52 fail "No schedule traces found?" 53fi 54 55echo 0 > /proc/sys/kernel/stack_tracer_enabled 56clear_trace 57sleep 1 58 59 60count=`cat trace | grep '()' | grep -v schedule | wc -l` 61 62if [ $count -ne 0 ]; then 63 fail "Graph filtering not working after stack tracer disabled?" 64fi 65 66count=`cat trace | grep 'schedule()' | wc -l` 67if [ $count -eq 0 ]; then 68 fail "No schedule traces found?" 69fi 70 71do_reset 72 73exit 0 74