Skip to content

Commit

Permalink
sefltests/tracing: Add a test for tracepoint events on modules
Browse files Browse the repository at this point in the history
Add a test case for tracepoint events on modules. This checks if it can add
and remove the events correctly.

Link: https://lore.kernel.org/all/172397781494.286558.7581515061075998225.stgit@devnote2/

Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
  • Loading branch information
mhiramat committed Sep 25, 2024
1 parent 57a7e6d commit 4e78dd6
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 0 deletions.
1 change: 1 addition & 0 deletions tools/testing/selftests/ftrace/config
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ CONFIG_PREEMPT_TRACER=y
CONFIG_PROBE_EVENTS_BTF_ARGS=y
CONFIG_SAMPLES=y
CONFIG_SAMPLE_FTRACE_DIRECT=m
CONFIG_SAMPLE_TRACE_EVENTS=m
CONFIG_SAMPLE_TRACE_PRINTK=m
CONFIG_SCHED_TRACER=y
CONFIG_STACK_TRACER=y
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: Generic dynamic event - add/remove tracepoint probe events on module
# requires: dynamic_events "t[:[<group>/][<event>]] <tracepoint> [<args>]":README

rmmod trace-events-sample ||:
if ! modprobe trace-events-sample ; then
echo "No trace-events sample module - please make CONFIG_SAMPLE_TRACE_EVENTS=m"
exit_unresolved;
fi
trap "rmmod trace-events-sample" EXIT

echo 0 > events/enable
echo > dynamic_events

TRACEPOINT1=foo_bar
TRACEPOINT2=foo_bar_with_cond

echo "t:myevent1 $TRACEPOINT1" >> dynamic_events
echo "t:myevent2 $TRACEPOINT2" >> dynamic_events

grep -q myevent1 dynamic_events
grep -q myevent2 dynamic_events
test -d events/tracepoints/myevent1
test -d events/tracepoints/myevent2

echo "-:myevent2" >> dynamic_events

grep -q myevent1 dynamic_events
! grep -q myevent2 dynamic_events

echo > dynamic_events

clear_trace

:;: "Try to put a probe on a tracepoint in non-loaded module" ;:
rmmod trace-events-sample

echo "t:myevent1 $TRACEPOINT1" >> dynamic_events
echo "t:myevent2 $TRACEPOINT2" >> dynamic_events

grep -q myevent1 dynamic_events
grep -q myevent2 dynamic_events
test -d events/tracepoints/myevent1
test -d events/tracepoints/myevent2

echo 1 > events/tracepoints/enable

modprobe trace-events-sample

sleep 2

grep -q "myevent1" trace
grep -q "myevent2" trace

rmmod trace-events-sample
trap "" EXIT

echo 0 > events/tracepoints/enable
echo > dynamic_events
clear_trace

0 comments on commit 4e78dd6

Please sign in to comment.