Skip to content

Commit b81a3a1

Browse files
committed
tracing/histogram: Add simple tests for stacktrace usage of synthetic events
Update the selftests to include a test of passing a stacktrace between the events of a synthetic event. Link: https://lkml.kernel.org/r/20230117152236.475439286@goodmis.org Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Tom Zanussi <zanussi@kernel.org> Cc: Ross Zwisler <zwisler@google.com> Cc: Ching-lin Yu <chinglinyu@google.com> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
1 parent 8823851 commit b81a3a1

3 files changed

Lines changed: 31 additions & 1 deletion

File tree

kernel/trace/trace.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5757,7 +5757,7 @@ static const char readme_msg[] =
57575757
#ifdef CONFIG_SYNTH_EVENTS
57585758
" events/synthetic_events\t- Create/append/remove/show synthetic events\n"
57595759
"\t Write into this file to define/undefine new synthetic events.\n"
5760-
"\t example: echo 'myevent u64 lat; char name[]' >> synthetic_events\n"
5760+
"\t example: echo 'myevent u64 lat; char name[]; long[] stack' >> synthetic_events\n"
57615761
#endif
57625762
#endif
57635763
;
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#!/bin/sh
2+
# SPDX-License-Identifier: GPL-2.0
3+
# description: event trigger - test inter-event histogram trigger trace action with dynamic string param
4+
# requires: set_event synthetic_events events/sched/sched_process_exec/hist "long[]' >> synthetic_events":README
5+
6+
fail() { #msg
7+
echo $1
8+
exit_fail
9+
}
10+
11+
echo "Test create synthetic event with stack"
12+
13+
14+
echo 's:wake_lat pid_t pid; u64 delta; unsigned long[] stack;' > dynamic_events
15+
echo 'hist:keys=next_pid:ts=common_timestamp.usecs,st=stacktrace if prev_state == 1||prev_state == 2' >> events/sched/sched_switch/trigger
16+
echo 'hist:keys=prev_pid:delta=common_timestamp.usecs-$ts,s=$st:onmax($delta).trace(wake_lat,prev_pid,$delta,$s)' >> events/sched/sched_switch/trigger
17+
echo 1 > events/synthetic/wake_lat/enable
18+
sleep 1
19+
20+
if ! grep -q "=>.*sched" trace; then
21+
fail "Failed to create synthetic event with stack"
22+
fi
23+
24+
exit 0

tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-synthetic-event-syntax.tc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,12 @@ grep "myevent[[:space:]]unsigned long var" synthetic_events
7070
echo "myevent char var[10]" > synthetic_events
7171
grep "myevent[[:space:]]char\[10\] var" synthetic_events
7272

73+
if grep -q 'long\[\]' README; then
74+
# test stacktrace type
75+
echo "myevent unsigned long[] var" > synthetic_events
76+
grep "myevent[[:space:]]unsigned long\[\] var" synthetic_events
77+
fi
78+
7379
do_reset
7480

7581
exit 0

0 commit comments

Comments
 (0)