-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
kselftests: Add tests for the preemptoff and irqsoff tracers
Here we add unit tests for the preemptoff and irqsoff tracer by using a kernel module introduced previously to trigger long preempt or irq disabled sections in the kernel. Link: http://lkml.kernel.org/r/20180711063540.91101-3-joel@joelfernandes.org Reviewed-by: Masami Hiramatsu <mhiramat@kernel.org> Acked-by: Masami Hiramatsu <mhiramat@kernel.org> Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
- Loading branch information
Joel Fernandes (Google)
authored and
Steven Rostedt (VMware)
committed
Jul 26, 2018
1 parent
f96e857
commit 8bd1369
Showing
2 changed files
with
76 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
73 changes: 73 additions & 0 deletions
73
tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
#!/bin/sh | ||
# SPDX-License-Identifier: GPL-2.0 | ||
# description: test for the preemptirqsoff tracer | ||
|
||
MOD=preemptirq_delay_test | ||
|
||
fail() { | ||
reset_tracer | ||
rmmod $MOD || true | ||
exit_fail | ||
} | ||
|
||
unsup() { #msg | ||
reset_tracer | ||
rmmod $MOD || true | ||
echo $1 | ||
exit_unsupported | ||
} | ||
|
||
modprobe $MOD || unsup "$MOD module not available" | ||
rmmod $MOD | ||
|
||
grep -q "preemptoff" available_tracers || unsup "preemptoff tracer not enabled" | ||
grep -q "irqsoff" available_tracers || unsup "irqsoff tracer not enabled" | ||
|
||
reset_tracer | ||
|
||
# Simulate preemptoff section for half a second couple of times | ||
echo preemptoff > current_tracer | ||
sleep 1 | ||
modprobe $MOD test_mode=preempt delay=500000 || fail | ||
rmmod $MOD || fail | ||
modprobe $MOD test_mode=preempt delay=500000 || fail | ||
rmmod $MOD || fail | ||
modprobe $MOD test_mode=preempt delay=500000 || fail | ||
rmmod $MOD || fail | ||
|
||
cat trace | ||
|
||
# Confirm which tracer | ||
grep -q "tracer: preemptoff" trace || fail | ||
|
||
# Check the end of the section | ||
egrep -q "5.....us : <stack trace>" trace || fail | ||
|
||
# Check for 500ms of latency | ||
egrep -q "latency: 5..... us" trace || fail | ||
|
||
reset_tracer | ||
|
||
# Simulate irqsoff section for half a second couple of times | ||
echo irqsoff > current_tracer | ||
sleep 1 | ||
modprobe $MOD test_mode=irq delay=500000 || fail | ||
rmmod $MOD || fail | ||
modprobe $MOD test_mode=irq delay=500000 || fail | ||
rmmod $MOD || fail | ||
modprobe $MOD test_mode=irq delay=500000 || fail | ||
rmmod $MOD || fail | ||
|
||
cat trace | ||
|
||
# Confirm which tracer | ||
grep -q "tracer: irqsoff" trace || fail | ||
|
||
# Check the end of the section | ||
egrep -q "5.....us : <stack trace>" trace || fail | ||
|
||
# Check for 500ms of latency | ||
egrep -q "latency: 5..... us" trace || fail | ||
|
||
reset_tracer | ||
exit 0 |