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