xref: /linux/tools/testing/selftests/ftrace/test.d/dynevent/add_remove_fprobe.tc (revision f5bd9d528ebac41a31919aa41f1a99eccb8917c8)
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
13echo "f:myevent1 $PLACE" >> dynamic_events
14
15# Make sure the event is attached and is the only one
16grep -q $PLACE enabled_functions
17cnt=`cat enabled_functions | wc -l`
18if [ $cnt -ne 1 ]; then
19	exit_fail
20fi
21
22echo "f:myevent2 $PLACE%return" >> dynamic_events
23
24# It should till be the only attached function
25cnt=`cat enabled_functions | wc -l`
26if [ $cnt -ne 1 ]; then
27	exit_fail
28fi
29
30# add another event
31echo "f:myevent3 $PLACE2" >> dynamic_events
32
33grep -q $PLACE2 enabled_functions
34cnt=`cat enabled_functions | wc -l`
35if [ $cnt -ne 2 ]; then
36	exit_fail
37fi
38
39grep -q myevent1 dynamic_events
40grep -q myevent2 dynamic_events
41grep -q myevent3 dynamic_events
42test -d events/fprobes/myevent1
43test -d events/fprobes/myevent2
44
45echo "-:myevent2" >> dynamic_events
46
47grep -q myevent1 dynamic_events
48! grep -q myevent2 dynamic_events
49
50# should still have 2 left
51cnt=`cat enabled_functions | wc -l`
52if [ $cnt -ne 2 ]; then
53	exit_fail
54fi
55
56echo > dynamic_events
57
58# Should have none left
59cnt=`cat enabled_functions | wc -l`
60if [ $cnt -ne 0 ]; then
61	exit_fail
62fi
63
64echo "f:myevent4 $PLACE" >> dynamic_events
65
66# Should only have one enabled
67cnt=`cat enabled_functions | wc -l`
68if [ $cnt -ne 1 ]; then
69	exit_fail
70fi
71
72echo > dynamic_events
73
74# Should have none left
75cnt=`cat enabled_functions | wc -l`
76if [ $cnt -ne 0 ]; then
77	exit_fail
78fi
79
80clear_trace
81