instance-event.tc 2.1 KB

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