| #!/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 |