Message ID | 20180621223236.211495-8-joel@joelfernandes.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Hi Joel, On Thu, 21 Jun 2018 15:32:36 -0700 Joel Fernandes <joel@joelfernandes.org> wrote: [...] > +++ b/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc > @@ -0,0 +1,74 @@ > +#!/bin/sh > +# SPDX-License-Identifier: GPL-2.0 > +# description: test for the preemptirqsoff tracer > + > +MOD=test_atomic_sections > + > +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 test_atomic_sections atomic_mode=preempt atomic_time=500000 || fail > +rmmod test_atomic_sections || fail > +modprobe test_atomic_sections atomic_mode=preempt atomic_time=500000 || fail > +rmmod test_atomic_sections || fail > +modprobe test_atomic_sections atomic_mode=preempt atomic_time=500000 || fail > +rmmod test_atomic_sections || fail Why don't you use $MOD for these operations? > + > +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 test_atomic_sections atomic_mode=irq atomic_time=500000 || fail > +rmmod test_atomic_sections || fail > +modprobe test_atomic_sections atomic_mode=irq atomic_time=500000 || fail > +rmmod test_atomic_sections || fail > +modprobe test_atomic_sections atomic_mode=irq atomic_time=500000 || fail > +rmmod test_atomic_sections || fail Ditto. Other parts looks good to me. Thanks, > + > +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 > + > -- > 2.18.0.rc2.346.g013aa6912e-goog >
diff --git a/tools/testing/selftests/ftrace/config b/tools/testing/selftests/ftrace/config index b01924c71c09..29588b328345 100644 --- a/tools/testing/selftests/ftrace/config +++ b/tools/testing/selftests/ftrace/config @@ -4,3 +4,6 @@ CONFIG_FUNCTION_PROFILER=y CONFIG_TRACER_SNAPSHOT=y CONFIG_STACK_TRACER=y CONFIG_HIST_TRIGGERS=y +CONFIG_PREEMPT_TRACER=y +CONFIG_IRQSOFF_TRACER=y +CONFIG_TEST_ATOMIC_SECTIONS=m diff --git a/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc b/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc new file mode 100644 index 000000000000..1764ff22c02b --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc @@ -0,0 +1,74 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: test for the preemptirqsoff tracer + +MOD=test_atomic_sections + +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 test_atomic_sections atomic_mode=preempt atomic_time=500000 || fail +rmmod test_atomic_sections || fail +modprobe test_atomic_sections atomic_mode=preempt atomic_time=500000 || fail +rmmod test_atomic_sections || fail +modprobe test_atomic_sections atomic_mode=preempt atomic_time=500000 || fail +rmmod test_atomic_sections || 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 test_atomic_sections atomic_mode=irq atomic_time=500000 || fail +rmmod test_atomic_sections || fail +modprobe test_atomic_sections atomic_mode=irq atomic_time=500000 || fail +rmmod test_atomic_sections || fail +modprobe test_atomic_sections atomic_mode=irq atomic_time=500000 || fail +rmmod test_atomic_sections || 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 +