Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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>

+69
+69
tools/testing/selftests/ftrace/test.d/dynevent/add_remove_multiple_fprobe.tc
··· 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