@@ -9,18 +9,33 @@ fail() { #msg
9
9
exit_fail
10
10
}
11
11
12
- echo " Test event filter function name"
12
+ sample_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
+
13
21
echo 0 > tracing_on
14
22
echo 0 > events/enable
23
+
24
+ echo " Get the most frequently calling function"
25
+ sample_events
26
+
27
+ target_func=` cut -d: -f3 trace | sed ' s/call_site=\([^+]*\)+0x.*/\1/' | sort | uniq -c | sort | tail -n 1 | sed ' s/^[ 0-9]*//' `
28
+ if [ -z " $target_func " ]; then
29
+ exit_fail
30
+ fi
15
31
echo > trace
16
- echo ' call_site.function == exit_mmap' > events/kmem/kmem_cache_free/filter
17
- echo 1 > events/kmem/kmem_cache_free/enable
18
- echo 1 > tracing_on
19
- ls > /dev/null
20
- echo 0 > events/kmem/kmem_cache_free/enable
21
32
22
- hitcnt=` grep kmem_cache_free trace| grep exit_mmap | wc -l`
23
- misscnt=` grep kmem_cache_free trace| grep -v exit_mmap | wc -l`
33
+ echo " Test event filter function name"
34
+ echo " call_site.function == $target_func " > events/kmem/kmem_cache_free/filter
35
+ sample_events
36
+
37
+ hitcnt=` grep kmem_cache_free trace| grep $target_func | wc -l`
38
+ misscnt=` grep kmem_cache_free trace| grep -v $target_func | wc -l`
24
39
25
40
if [ $hitcnt -eq 0 ]; then
26
41
exit_fail
@@ -30,20 +45,14 @@ if [ $misscnt -gt 0 ]; then
30
45
exit_fail
31
46
fi
32
47
33
- address=` grep ' exit_mmap$ ' /proc/kallsyms | cut -d' ' -f1`
48
+ address=` grep " ${target_func} \$ " /proc/kallsyms | cut -d' ' -f1`
34
49
35
50
echo " Test event filter function address"
36
- echo 0 > tracing_on
37
- echo 0 > events/enable
38
- echo > trace
39
51
echo " call_site.function == 0x$address " > events/kmem/kmem_cache_free/filter
40
- echo 1 > events/kmem/kmem_cache_free/enable
41
- echo 1 > tracing_on
42
- sleep 1
43
- echo 0 > events/kmem/kmem_cache_free/enable
52
+ sample_events
44
53
45
- hitcnt=` grep kmem_cache_free trace| grep exit_mmap | wc -l`
46
- misscnt=` grep kmem_cache_free trace| grep -v exit_mmap | wc -l`
54
+ hitcnt=` grep kmem_cache_free trace| grep $target_func | wc -l`
55
+ misscnt=` grep kmem_cache_free trace| grep -v $target_func | wc -l`
47
56
48
57
if [ $hitcnt -eq 0 ]; then
49
58
exit_fail
0 commit comments