Skip to content

Commit 453553e

Browse files
committed
selftests/ftrace: Add a testcase for multiple fprobe events
Add a testcase for multiple fprobe events on the same function so that it clears ftrace hash map correctly when removing the events. Link: https://lore.kernel.org/all/177669370353.132053.16801520791509406141.stgit@mhiramat.tok.corp.google.com/ Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
1 parent 132001e commit 453553e

1 file changed

Lines changed: 69 additions & 0 deletions

File tree

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#!/bin/sh
2+
# SPDX-License-Identifier: GPL-2.0
3+
# description: Generic dynamic event - add/remove multiple fprobe events on the same function
4+
# requires: dynamic_events "f[:[<group>/][<event>]] <func-name>[%return] [<args>]":README enabled_functions
5+
6+
echo 0 > events/enable
7+
echo > dynamic_events
8+
9+
PLACE=vfs_read
10+
PLACE2=vfs_open
11+
12+
:;: 'Ensure no other ftrace user' ;:
13+
test `cat enabled_functions | wc -l` -eq 0 || exit_unresolved
14+
15+
:;: 'Test case 1: leave entry event' ;:
16+
:;: 'Add entry and exit events on the same place' ;:
17+
echo "f:event1 ${PLACE}" >> dynamic_events
18+
echo "f:event2 ${PLACE}%return" >> dynamic_events
19+
20+
:;: 'Enable both of them' ;:
21+
echo 1 > events/fprobes/enable
22+
test `cat enabled_functions | wc -l` -eq 1
23+
24+
:;: 'Disable and remove exit event' ;:
25+
echo 0 > events/fprobes/event2/enable
26+
echo -:event2 >> dynamic_events
27+
28+
:;: 'Disable and remove all events' ;:
29+
echo 0 > events/fprobes/enable
30+
echo > dynamic_events
31+
32+
:;: 'Add another event' ;:
33+
echo "f:event3 ${PLACE2}%return" > dynamic_events
34+
echo 1 > events/fprobes/enable
35+
test `cat enabled_functions | wc -l` -eq 1
36+
37+
:;: 'No other ftrace user' ;:
38+
echo 0 > events/fprobes/enable
39+
echo > dynamic_events
40+
test `cat enabled_functions | wc -l` -eq 0
41+
42+
:;: 'Test case 2: leave exit event' ;:
43+
:;: 'Add entry and exit events on the same place' ;:
44+
echo "f:event1 ${PLACE}" >> dynamic_events
45+
echo "f:event2 ${PLACE}%return" >> dynamic_events
46+
47+
:;: 'Enable both of them' ;:
48+
echo 1 > events/fprobes/enable
49+
test `cat enabled_functions | wc -l` -eq 1
50+
51+
:;: 'Disable and remove entry event' ;:
52+
echo 0 > events/fprobes/event1/enable
53+
echo -:event1 >> dynamic_events
54+
55+
:;: 'Disable and remove all events' ;:
56+
echo 0 > events/fprobes/enable
57+
echo > dynamic_events
58+
59+
:;: 'Add another event' ;:
60+
echo "f:event3 ${PLACE2}" > dynamic_events
61+
echo 1 > events/fprobes/enable
62+
test `cat enabled_functions | wc -l` -eq 1
63+
64+
:;: 'No other ftrace user' ;:
65+
echo 0 > events/fprobes/enable
66+
echo > dynamic_events
67+
test `cat enabled_functions | wc -l` -eq 0
68+
69+
clear_trace

0 commit comments

Comments
 (0)