#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: event filter function - test event filtering on functions
# requires: set_event events/kmem/kmem_cache_free/filter
# flags: instance

fail() { #msg
    echo $1
    exit_fail
}

sample_events() {
    echo > trace
    echo 1 > events/kmem/kmem_cache_free/enable
    echo 1 > tracing_on
    ls > /dev/null
    echo 0 > tracing_on
    echo 0 > events/kmem/kmem_cache_free/enable
}

echo 0 > tracing_on
echo 0 > events/enable

echo "Get the most frequently calling function"
sample_events

target_func=`cut -d: -f3 trace | sed 's/call_site=\([^+]*\)+0x.*/\1/' | sort | uniq -c | sort | tail -n 1 | sed 's/^[ 0-9]*//'`
if [ -z "$target_func" ]; then
    exit_fail
fi
echo > trace

echo "Test event filter function name"
echo "call_site.function == $target_func" > events/kmem/kmem_cache_free/filter
sample_events

hitcnt=`grep kmem_cache_free trace| grep $target_func | wc -l`
misscnt=`grep kmem_cache_free trace| grep -v $target_func | wc -l`

if [ $hitcnt -eq 0 ]; then
	exit_fail
fi

if [ $misscnt -gt 0 ]; then
	exit_fail
fi

address=`grep " ${target_func}\$" /proc/kallsyms | cut -d' ' -f1`

echo "Test event filter function address"
echo "call_site.function == 0x$address" > events/kmem/kmem_cache_free/filter
sample_events

hitcnt=`grep kmem_cache_free trace| grep $target_func | wc -l`
misscnt=`grep kmem_cache_free trace| grep -v $target_func | wc -l`

if [ $hitcnt -eq 0 ]; then
	exit_fail
fi

if [ $misscnt -gt 0 ]; then
	exit_fail
fi

reset_events_filter

exit 0
