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