mirror of
https://github.com/torvalds/linux.git
synced 2026-04-29 20:12:38 -04:00
The UNRESOLVED state is much more apporiate than the UNSUPPORTED state for the absence of the test module, as it matches "test was set up incorrectly" situation in the README file. A possible scenario is that the function was enabled (supported by the kernel) but the module was not installed properly, in this case we cannot call this as UNSUPPORTED. This change also make it consistent with other module-related tests in ftrace. Signed-off-by: Po-Hsu Lin <po-hsu.lin@canonical.com> Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org> Acked-by: Masami Hiramatsu <mhiramat@kernel.org> Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
81 lines
1.7 KiB
Bash
81 lines
1.7 KiB
Bash
#!/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
|
|
}
|
|
|
|
unres() { #msg
|
|
reset_tracer
|
|
rmmod $MOD || true
|
|
echo $1
|
|
exit_unresolved
|
|
}
|
|
|
|
modprobe $MOD || unres "$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
|