FILE
event-filter-function.tc
File preview with syntax highlighting.
linux-6.19.14/tools/testing/selftests/ftrace/test.d/filter/event-filter-function.tc
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 1 > events/kmem/kmem_cache_free/enable 14 echo 1 > tracing_on 15 ls > /dev/null 16 echo 0 > tracing_on 17 echo 0 > events/kmem/kmem_cache_free/enable 18} 19 20echo 0 > tracing_on 21echo 0 > events/enable 22 23# Clear functions caused by page cache; run sample_events twice 24sample_events 25sample_events 26 27echo "Get the most frequently calling function" 28echo > trace 29sample_events 30 31target_func=`cat trace | grep -o 'call_site=\([^+]*\)' | sed 's/call_site=//' | sort | uniq -c | sort | tail -n 1 | sed 's/^[ 0-9]*//'` 32if [ -z "$target_func" ]; then 33 exit_fail 34fi 35echo > trace 36 37echo "Test event filter function name" 38echo "call_site.function == $target_func" > events/kmem/kmem_cache_free/filter 39 40sample_events 41max_retry=10 42while [ `grep kmem_cache_free trace| wc -l` -eq 0 ]; do 43sample_events 44max_retry=$((max_retry - 1)) 45if [ $max_retry -eq 0 ]; then 46 exit_fail 47fi 48done 49 50hitcnt=`grep kmem_cache_free trace| grep $target_func | wc -l` 51misscnt=`grep kmem_cache_free trace| grep -v $target_func | wc -l` 52 53if [ $hitcnt -eq 0 ]; then 54 exit_fail 55fi 56 57if [ $misscnt -gt 0 ]; then 58 exit_fail 59fi 60 61address=`grep " ${target_func}\$" /proc/kallsyms | cut -d' ' -f1` 62 63echo "Test event filter function address" 64echo "call_site.function == 0x$address" > events/kmem/kmem_cache_free/filter 65echo > trace 66sample_events 67max_retry=10 68while [ `grep kmem_cache_free trace| wc -l` -eq 0 ]; do 69sample_events 70max_retry=$((max_retry - 1)) 71if [ $max_retry -eq 0 ]; then 72 exit_fail 73fi 74done 75 76hitcnt=`grep kmem_cache_free trace| grep $target_func | wc -l` 77misscnt=`grep kmem_cache_free trace| grep -v $target_func | wc -l` 78 79if [ $hitcnt -eq 0 ]; then 80 exit_fail 81fi 82 83if [ $misscnt -gt 0 ]; then 84 exit_fail 85fi 86 87# Check strings too 88if [ -f events/syscalls/sys_enter_openat/filter ]; then 89 DIRNAME=`basename $TMPDIR` 90 echo "filename.ustring ~ \"*$DIRNAME*\"" > events/syscalls/sys_enter_openat/filter 91 echo 1 > events/syscalls/sys_enter_openat/enable 92 echo 1 > tracing_on 93 ls /bin/sh 94 nocnt=`grep openat trace | wc -l` 95 ls $TMPDIR 96 echo 0 > tracing_on 97 hitcnt=`grep openat trace | wc -l`; 98 echo 0 > events/syscalls/sys_enter_openat/enable 99 if [ $nocnt -gt 0 ]; then 100 exit_fail 101 fi 102 if [ $hitcnt -eq 0 ]; then 103 exit_fail 104 fi 105fi 106 107reset_events_filter 108 109exit 0
~/
Read-only file preview.