#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: ftrace - function graph filters

# Make sure that function graph filtering works

if ! grep -q function_graph available_tracers; then
    echo "no function graph tracer configured"
    exit_unsupported
fi

do_reset() {
    reset_tracer
    enable_tracing
    clear_trace
}

fail() { # msg
    do_reset
    echo $1
    exit $FAIL
}

disable_tracing
clear_trace

# filter something, schedule is always good
if ! echo "schedule" > set_ftrace_filter; then
    # test for powerpc 64
    if ! echo ".schedule" > set_ftrace_filter; then
	fail "can not enable schedule filter"
    fi
fi

echo function_graph > current_tracer
enable_tracing
sleep 1
# search for functions (has "()" on the line), and make sure
# that only the schedule function was found
count=`cat trace | grep '()' | grep -v schedule | wc -l`
if [ $count -ne 0 ]; then
    fail "Graph filtering not working by itself?"
fi

# Make sure we did find something
count=`cat trace | grep 'schedule()' | wc -l` 
if [ $count -eq 0 ]; then
    fail "No schedule traces found?"
fi

do_reset

exit 0
