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