instance-event.tc 1.8 KB

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