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

# Make sure that function glob matching filter works.

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

check_filter_file set_ftrace_filter

disable_tracing
clear_trace

ftrace_filter_check() { # glob grep
  echo "$1" > set_ftrace_filter
  cut -f1 -d" " set_ftrace_filter > $TMPDIR/actual
  cut -f1 -d" " available_filter_functions | grep "$2" > $TMPDIR/expected
  DIFF=`diff $TMPDIR/actual $TMPDIR/expected`
  test -z "$DIFF"
}

# filter by *, front match
ftrace_filter_check '*schedule' '^.*schedule$'

# filter by *, middle match
ftrace_filter_check '*schedule*' '^.*schedule.*$'

# filter by *, end match
ftrace_filter_check 'schedule*' '^schedule.*$'

# filter by *mid*end
ftrace_filter_check '*pin*lock' '.*pin.*lock$'

# filter by start*mid*
ftrace_filter_check 'mutex*try*' '^mutex.*try.*'

# Advanced full-glob matching feature is recently supported.
# Skip the tests if we are sure the kernel does not support it.
if grep -q 'accepts: .* glob-matching-pattern' README ; then

# filter by *, both side match
ftrace_filter_check 'sch*ule' '^sch.*ule$'

# filter by char class.
ftrace_filter_check '[Ss]y[Ss]_*' '^[Ss]y[Ss]_.*$'

# filter by ?, schedule is always good
if ! echo "sch?dule" > set_ftrace_filter; then
    # test for powerpc 64
    if ! echo ".sch?dule" > set_ftrace_filter; then
	fail "can not enable schedule filter"
    fi
    cat set_ftrace_filter | grep '^.schedule$'
else
    cat set_ftrace_filter | grep '^schedule$'
fi

fi

echo > set_ftrace_filter
enable_tracing
