1#!/bin/sh
2# description: Test creation and deletion of trace instances while setting an event
3
4if [ ! -d instances ] ; then
5    echo "no instance directory with this kernel"
6    exit_unsupported;
7fi
8
9fail() { # mesg
10    rmdir foo 2>/dev/null
11    echo $1
12    set -e
13    exit $FAIL
14}
15
16cd instances
17
18# we don't want to fail on error
19set +e
20
21mkdir x
22rmdir x
23result=$?
24
25if [ $result -ne 0 ]; then
26    echo "instance rmdir not supported"
27    exit_unsupported
28fi
29
30instance_slam() {
31        while :; do
32                mkdir foo 2> /dev/null
33                rmdir foo 2> /dev/null
34        done
35}
36
37instance_read() {
38        while :; do
39                cat foo/trace 1> /dev/null 2>&1
40        done
41}
42
43instance_set() {
44        while :; do
45                echo 1 > foo/events/sched/sched_switch
46        done 2> /dev/null
47}
48
49instance_slam &
50p1=$!
51echo $p1
52
53instance_set &
54p2=$!
55echo $p2
56
57instance_read &
58p3=$!
59echo $p3
60
61sleep 1
62
63kill -1 $p3
64kill -1 $p2
65kill -1 $p1
66
67echo "Wait for processes to finish"
68wait $p1 $p2 $p3
69echo "all processes finished, wait for cleanup"
70sleep 1
71
72mkdir foo
73ls foo > /dev/null
74rmdir foo
75if [ -d foo ]; then
76        fail "foo still exists"
77fi
78exit 0
79
80
81
82
83instance_slam() {
84    while :; do
85	mkdir x
86	mkdir y
87	mkdir z
88	rmdir x
89	rmdir y
90	rmdir z
91    done 2>/dev/null
92}
93
94instance_slam &
95x=`jobs -l`
96p1=`echo $x | cut -d' ' -f2`
97echo $p1
98
99instance_slam &
100x=`jobs -l | tail -1`
101p2=`echo $x | cut -d' ' -f2`
102echo $p2
103
104instance_slam &
105x=`jobs -l | tail -1`
106p3=`echo $x | cut -d' ' -f2`
107echo $p3
108
109instance_slam &
110x=`jobs -l | tail -1`
111p4=`echo $x | cut -d' ' -f2`
112echo $p4
113
114instance_slam &
115x=`jobs -l | tail -1`
116p5=`echo $x | cut -d' ' -f2`
117echo $p5
118
119ls -lR >/dev/null
120sleep 1
121
122kill -1 $p1
123kill -1 $p2
124kill -1 $p3
125kill -1 $p4
126kill -1 $p5
127
128echo "Wait for processes to finish"
129wait $p1 $p2 $p3 $p4 $p5
130echo "all processes finished, wait for cleanup"
131
132mkdir x y z
133ls x y z
134rmdir x y z
135for d in x y z; do
136        if [ -d $d ]; then
137                fail "instance $d still exists"
138        fi
139done
140
141set -e
142
143exit 0
144