147 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/sh
 | |
| # SPDX-License-Identifier: GPL-2.0
 | |
| # description: Test creation and deletion of trace instances while setting an event
 | |
| 
 | |
| if [ ! -d instances ] ; then
 | |
|     echo "no instance directory with this kernel"
 | |
|     exit_unsupported;
 | |
| fi
 | |
| 
 | |
| fail() { # mesg
 | |
|     rmdir foo 2>/dev/null
 | |
|     echo $1
 | |
|     set -e
 | |
|     exit_fail
 | |
| }
 | |
| 
 | |
| cd instances
 | |
| 
 | |
| # we don't want to fail on error
 | |
| set +e
 | |
| 
 | |
| mkdir x
 | |
| rmdir x
 | |
| result=$?
 | |
| 
 | |
| if [ $result -ne 0 ]; then
 | |
|     echo "instance rmdir not supported"
 | |
|     exit_unsupported
 | |
| fi
 | |
| 
 | |
| instance_slam() {
 | |
|         while :; do
 | |
|                 mkdir foo 2> /dev/null
 | |
|                 rmdir foo 2> /dev/null
 | |
|         done
 | |
| }
 | |
| 
 | |
| instance_read() {
 | |
|         while :; do
 | |
|                 cat foo/trace 1> /dev/null 2>&1
 | |
|         done
 | |
| }
 | |
| 
 | |
| instance_set() {
 | |
|         while :; do
 | |
|                 echo 1 > foo/events/sched/sched_switch
 | |
|         done 2> /dev/null
 | |
| }
 | |
| 
 | |
| instance_slam &
 | |
| p1=$!
 | |
| echo $p1
 | |
| 
 | |
| instance_set &
 | |
| p2=$!
 | |
| echo $p2
 | |
| 
 | |
| instance_read &
 | |
| p3=$!
 | |
| echo $p3
 | |
| 
 | |
| sleep 1
 | |
| 
 | |
| kill -1 $p3
 | |
| kill -1 $p2
 | |
| kill -1 $p1
 | |
| 
 | |
| echo "Wait for processes to finish"
 | |
| wait $p1 $p2 $p3
 | |
| echo "all processes finished, wait for cleanup"
 | |
| sleep 1
 | |
| 
 | |
| mkdir foo
 | |
| ls foo > /dev/null
 | |
| rmdir foo
 | |
| if [ -d foo ]; then
 | |
|         fail "foo still exists"
 | |
| fi
 | |
| 
 | |
| mkdir foo
 | |
| echo "schedule:enable_event:sched:sched_switch" > foo/set_ftrace_filter
 | |
| rmdir foo
 | |
| if [ -d foo ]; then
 | |
|         fail "foo still exists"
 | |
| fi
 | |
| if grep -q "schedule:enable_event:sched:sched_switch" ../set_ftrace_filter; then
 | |
| 	echo "Older kernel detected. Cleanup filter"
 | |
| 	echo '!schedule:enable_event:sched:sched_switch' > ../set_ftrace_filter
 | |
| fi
 | |
| 
 | |
| instance_slam() {
 | |
|     while :; do
 | |
| 	mkdir x
 | |
| 	mkdir y
 | |
| 	mkdir z
 | |
| 	rmdir x
 | |
| 	rmdir y
 | |
| 	rmdir z
 | |
|     done 2>/dev/null
 | |
| }
 | |
| 
 | |
| instance_slam &
 | |
| p1=$!
 | |
| echo $p1
 | |
| 
 | |
| instance_slam &
 | |
| p2=$!
 | |
| echo $p2
 | |
| 
 | |
| instance_slam &
 | |
| p3=$!
 | |
| echo $p3
 | |
| 
 | |
| instance_slam &
 | |
| p4=$!
 | |
| echo $p4
 | |
| 
 | |
| instance_slam &
 | |
| p5=$!
 | |
| echo $p5
 | |
| 
 | |
| ls -lR >/dev/null
 | |
| sleep 1
 | |
| 
 | |
| kill -1 $p1
 | |
| kill -1 $p2
 | |
| kill -1 $p3
 | |
| kill -1 $p4
 | |
| kill -1 $p5
 | |
| 
 | |
| echo "Wait for processes to finish"
 | |
| wait $p1 $p2 $p3 $p4 $p5
 | |
| echo "all processes finished, wait for cleanup"
 | |
| 
 | |
| mkdir x y z
 | |
| ls x y z
 | |
| rmdir x y z
 | |
| for d in x y z; do
 | |
|         if [ -d $d ]; then
 | |
|                 fail "instance $d still exists"
 | |
|         fi
 | |
| done
 | |
| 
 | |
| set -e
 | |
| 
 | |
| exit 0
 | 
