1#!/bin/sh 2# SPDX-License-Identifier: GPL-2.0 3# description: event filter function - test event filtering on functions 4# requires: set_event events/kmem/kmem_cache_free/filter 5# flags: instance 6 7fail() { #msg 8 echo $1 9 exit_fail 10} 11 12sample_events() { 13 echo > trace 14 echo 1 > events/kmem/kmem_cache_free/enable 15 echo 1 > tracing_on 16 ls > /dev/null 17 echo 0 > tracing_on 18 echo 0 > events/kmem/kmem_cache_free/enable 19} 20 21echo 0 > tracing_on 22echo 0 > events/enable 23 24echo "Get the most frequently calling function" 25sample_events 26 27target_func=`cut -d: -f3 trace | sed 's/call_site=\([^+]*\)+0x.*/\1/' | sort | uniq -c | sort | tail -n 1 | sed 's/^[ 0-9]*//'` 28if [ -z "$target_func" ]; then 29 exit_fail 30fi 31echo > trace 32 33echo "Test event filter function name" 34echo "call_site.function == $target_func" > events/kmem/kmem_cache_free/filter 35sample_events 36 37hitcnt=`grep kmem_cache_free trace| grep $target_func | wc -l` 38misscnt=`grep kmem_cache_free trace| grep -v $target_func | wc -l` 39 40if [ $hitcnt -eq 0 ]; then 41 exit_fail 42fi 43 44if [ $misscnt -gt 0 ]; then 45 exit_fail 46fi 47 48address=`grep " ${target_func}\$" /proc/kallsyms | cut -d' ' -f1` 49 50echo "Test event filter function address" 51echo "call_site.function == 0x$address" > events/kmem/kmem_cache_free/filter 52sample_events 53 54hitcnt=`grep kmem_cache_free trace| grep $target_func | wc -l` 55misscnt=`grep kmem_cache_free trace| grep -v $target_func | wc -l` 56 57if [ $hitcnt -eq 0 ]; then 58 exit_fail 59fi 60 61if [ $misscnt -gt 0 ]; then 62 exit_fail 63fi 64 65reset_events_filter 66 67exit 0 68