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