1#!/bin/sh 2# SPDX-License-Identifier: GPL-2.0 3# description: test for the preemptirqsoff tracer 4 5MOD=preemptirq_delay_test 6 7fail() { 8 reset_tracer 9 rmmod $MOD || true 10 exit_fail 11} 12 13unsup() { #msg 14 reset_tracer 15 rmmod $MOD || true 16 echo $1 17 exit_unsupported 18} 19 20modprobe $MOD || unsup "$MOD module not available" 21rmmod $MOD 22 23grep -q "preemptoff" available_tracers || unsup "preemptoff tracer not enabled" 24grep -q "irqsoff" available_tracers || unsup "irqsoff tracer not enabled" 25 26reset_tracer 27 28# Simulate preemptoff section for half a second couple of times 29echo preemptoff > current_tracer 30sleep 1 31modprobe $MOD test_mode=preempt delay=500000 || fail 32rmmod $MOD || fail 33modprobe $MOD test_mode=preempt delay=500000 || fail 34rmmod $MOD || fail 35modprobe $MOD test_mode=preempt delay=500000 || fail 36rmmod $MOD || fail 37 38cat trace 39 40# Confirm which tracer 41grep -q "tracer: preemptoff" trace || fail 42 43# Check the end of the section 44egrep -q "5.....us : <stack trace>" trace || fail 45 46# Check for 500ms of latency 47egrep -q "latency: 5..... us" trace || fail 48 49reset_tracer 50 51# Simulate irqsoff section for half a second couple of times 52echo irqsoff > current_tracer 53sleep 1 54modprobe $MOD test_mode=irq delay=500000 || fail 55rmmod $MOD || fail 56modprobe $MOD test_mode=irq delay=500000 || fail 57rmmod $MOD || fail 58modprobe $MOD test_mode=irq delay=500000 || fail 59rmmod $MOD || fail 60 61cat trace 62 63# Confirm which tracer 64grep -q "tracer: irqsoff" trace || fail 65 66# Check the end of the section 67egrep -q "5.....us : <stack trace>" trace || fail 68 69# Check for 500ms of latency 70egrep -q "latency: 5..... us" trace || fail 71 72reset_tracer 73exit 0 74