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
12echo "Test event filter function name"
13echo 0 > tracing_on
14echo 0 > events/enable
15echo > trace
16echo 'call_site.function == exit_mmap' > events/kmem/kmem_cache_free/filter
17echo 1 > events/kmem/kmem_cache_free/enable
18echo 1 > tracing_on
19ls > /dev/null
20echo 0 > events/kmem/kmem_cache_free/enable
21
22hitcnt=`grep kmem_cache_free trace| grep exit_mmap | wc -l`
23misscnt=`grep kmem_cache_free trace| grep -v exit_mmap | wc -l`
24
25if [ $hitcnt -eq 0 ]; then
26	exit_fail
27fi
28
29if [ $misscnt -gt 0 ]; then
30	exit_fail
31fi
32
33address=`grep ' exit_mmap$' /proc/kallsyms | cut -d' ' -f1`
34
35echo "Test event filter function address"
36echo 0 > tracing_on
37echo 0 > events/enable
38echo > trace
39echo "call_site.function == 0x$address" > events/kmem/kmem_cache_free/filter
40echo 1 > events/kmem/kmem_cache_free/enable
41echo 1 > tracing_on
42sleep 1
43echo 0 > events/kmem/kmem_cache_free/enable
44
45hitcnt=`grep kmem_cache_free trace| grep exit_mmap | wc -l`
46misscnt=`grep kmem_cache_free trace| grep -v exit_mmap | wc -l`
47
48if [ $hitcnt -eq 0 ]; then
49	exit_fail
50fi
51
52if [ $misscnt -gt 0 ]; then
53	exit_fail
54fi
55
56reset_events_filter
57
58exit 0
59