Merge tag 'platform-drivers-x86-v6.9-3' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-block.git] / tools / testing / selftests / ftrace / test.d / filter / event-filter-function.tc
CommitLineData
7f09d639
SRG
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
eb50d0f2
MHG
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
7f09d639
SRG
21echo 0 > tracing_on
22echo 0 > events/enable
eb50d0f2
MHG
23
24echo "Get the most frequently calling function"
25sample_events
26
8ecab2e6 27target_func=`cat trace | grep -o 'call_site=\([^+]*\)' | sed 's/call_site=//' | sort | uniq -c | sort | tail -n 1 | sed 's/^[ 0-9]*//'`
eb50d0f2
MHG
28if [ -z "$target_func" ]; then
29 exit_fail
30fi
7f09d639 31echo > trace
7f09d639 32
eb50d0f2
MHG
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`
7f09d639
SRG
39
40if [ $hitcnt -eq 0 ]; then
41 exit_fail
42fi
43
44if [ $misscnt -gt 0 ]; then
45 exit_fail
46fi
47
eb50d0f2 48address=`grep " ${target_func}\$" /proc/kallsyms | cut -d' ' -f1`
7f09d639
SRG
49
50echo "Test event filter function address"
7f09d639 51echo "call_site.function == 0x$address" > events/kmem/kmem_cache_free/filter
eb50d0f2 52sample_events
7f09d639 53
eb50d0f2
MHG
54hitcnt=`grep kmem_cache_free trace| grep $target_func | wc -l`
55misscnt=`grep kmem_cache_free trace| grep -v $target_func | wc -l`
7f09d639
SRG
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