xref: /linux/tools/testing/selftests/ftrace/test.d/dynevent/add_remove_fprobe.tc (revision d30c1683aaecb93d2ab95685dc4300a33d3cea7a)
1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0
3# description: Generic dynamic event - add/remove fprobe events
4# requires: dynamic_events "f[:[<group>/][<event>]] <func-name>[%return] [<args>]":README
5
6echo 0 > events/enable
7echo > dynamic_events
8
9PLACE=$FUNCTION_FORK
10PLACE2="kmem_cache_free"
11PLACE3="schedule_timeout"
12
13# Some functions may have BPF programs attached, therefore
14# count already enabled_functions before tests start
15ocnt=`cat enabled_functions | wc -l`
16
17echo "f:myevent1 $PLACE" >> dynamic_events
18
19echo "f:myevent2 $PLACE%return" >> dynamic_events
20
21# add another event
22echo "f:myevent3 $PLACE2" >> dynamic_events
23
24grep -q myevent1 dynamic_events
25grep -q myevent2 dynamic_events
26grep -q myevent3 dynamic_events
27test -d events/fprobes/myevent1
28test -d events/fprobes/myevent2
29
30echo 1 > events/fprobes/myevent1/enable
31# Make sure the event is attached.
32grep -q $PLACE enabled_functions
33cnt=`cat enabled_functions | wc -l`
34if [ $cnt -eq $ocnt ]; then
35	exit_fail
36fi
37
38echo 1 > events/fprobes/myevent2/enable
39cnt2=`cat enabled_functions | wc -l`
40
41echo 1 > events/fprobes/myevent3/enable
42# If the function is different, the attached function should be increased
43grep -q $PLACE2 enabled_functions
44cnt=`cat enabled_functions | wc -l`
45if [ $cnt -eq $cnt2 ]; then
46	exit_fail
47fi
48
49echo 0 > events/fprobes/myevent2/enable
50echo "-:myevent2" >> dynamic_events
51
52grep -q myevent1 dynamic_events
53! grep -q myevent2 dynamic_events
54
55echo 0 > events/fprobes/enable
56echo > dynamic_events
57
58# Should have none left
59cnt=`cat enabled_functions | wc -l`
60if [ $cnt -ne $ocnt ]; then
61	exit_fail
62fi
63
64echo "f:myevent4 $PLACE" >> dynamic_events
65
66echo 1 > events/fprobes/myevent4/enable
67# Should only have one enabled
68cnt=`cat enabled_functions | wc -l`
69if [ $cnt -ne $((ocnt + 1)) ]; then
70	exit_fail
71fi
72
73echo 0 > events/fprobes/enable
74echo > dynamic_events
75
76# Should have none left
77cnt=`cat enabled_functions | wc -l`
78if [ $cnt -ne $ocnt ]; then
79	exit_fail
80fi
81
82clear_trace
83