Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/sh
0002 # SPDX-License-Identifier: GPL-2.0
0003 # description: test for the preemptirqsoff tracer
0004 # requires: preemptoff:tracer irqsoff:tracer
0005 
0006 MOD=preemptirq_delay_test
0007 
0008 fail() {
0009     reset_tracer
0010     rmmod $MOD || true
0011     exit_fail
0012 }
0013 
0014 unsup() { #msg
0015     reset_tracer
0016     rmmod $MOD || true
0017     echo $1
0018     exit_unsupported
0019 }
0020 
0021 unres() { #msg
0022     reset_tracer
0023     rmmod $MOD || true
0024     echo $1
0025     exit_unresolved
0026 }
0027 
0028 modprobe $MOD || unres "$MOD module not available"
0029 rmmod $MOD
0030 
0031 reset_tracer
0032 
0033 # Simulate preemptoff section for half a second couple of times
0034 echo preemptoff > current_tracer
0035 sleep 1
0036 modprobe $MOD test_mode=preempt delay=500000 || fail
0037 rmmod $MOD || fail
0038 modprobe $MOD test_mode=preempt delay=500000 || fail
0039 rmmod $MOD || fail
0040 modprobe $MOD test_mode=preempt delay=500000 || fail
0041 rmmod $MOD || fail
0042 
0043 cat trace
0044 
0045 # Confirm which tracer
0046 grep -q "tracer: preemptoff" trace || fail
0047 
0048 # Check the end of the section
0049 egrep -q "5.....us : <stack trace>" trace || fail
0050 
0051 # Check for 500ms of latency
0052 egrep -q "latency: 5..... us" trace || fail
0053 
0054 reset_tracer
0055 
0056 # Simulate irqsoff section for half a second couple of times
0057 echo irqsoff > current_tracer
0058 sleep 1
0059 modprobe $MOD test_mode=irq delay=500000 || fail
0060 rmmod $MOD || fail
0061 modprobe $MOD test_mode=irq delay=500000 || fail
0062 rmmod $MOD || fail
0063 modprobe $MOD test_mode=irq delay=500000 || fail
0064 rmmod $MOD || fail
0065 
0066 cat trace
0067 
0068 # Confirm which tracer
0069 grep -q "tracer: irqsoff" trace || fail
0070 
0071 # Check the end of the section
0072 egrep -q "5.....us : <stack trace>" trace || fail
0073 
0074 # Check for 500ms of latency
0075 egrep -q "latency: 5..... us" trace || fail
0076 
0077 reset_tracer
0078 exit 0