191e6f1ceSSteven Rostedt (Red Hat)#!/bin/sh
2b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0
391e6f1ceSSteven Rostedt (Red Hat)# description: Test creation and deletion of trace instances while setting an event
43591e90fSMasami Hiramatsu# requires: instances
591e6f1ceSSteven Rostedt (Red Hat)
691e6f1ceSSteven Rostedt (Red Hat)fail() { # mesg
791e6f1ceSSteven Rostedt (Red Hat)    rmdir foo 2>/dev/null
891e6f1ceSSteven Rostedt (Red Hat)    echo $1
991e6f1ceSSteven Rostedt (Red Hat)    set -e
1042534b1fSMasami Hiramatsu    exit_fail
1191e6f1ceSSteven Rostedt (Red Hat)}
1291e6f1ceSSteven Rostedt (Red Hat)
1391e6f1ceSSteven Rostedt (Red Hat)cd instances
1491e6f1ceSSteven Rostedt (Red Hat)
1591e6f1ceSSteven Rostedt (Red Hat)# we don't want to fail on error
1691e6f1ceSSteven Rostedt (Red Hat)set +e
1791e6f1ceSSteven Rostedt (Red Hat)
1891e6f1ceSSteven Rostedt (Red Hat)mkdir x
1991e6f1ceSSteven Rostedt (Red Hat)rmdir x
2091e6f1ceSSteven Rostedt (Red Hat)result=$?
2191e6f1ceSSteven Rostedt (Red Hat)
2291e6f1ceSSteven Rostedt (Red Hat)if [ $result -ne 0 ]; then
2391e6f1ceSSteven Rostedt (Red Hat)    echo "instance rmdir not supported"
2491e6f1ceSSteven Rostedt (Red Hat)    exit_unsupported
2591e6f1ceSSteven Rostedt (Red Hat)fi
2691e6f1ceSSteven Rostedt (Red Hat)
2791e6f1ceSSteven Rostedt (Red Hat)instance_slam() {
2891e6f1ceSSteven Rostedt (Red Hat)        while :; do
2991e6f1ceSSteven Rostedt (Red Hat)                mkdir foo 2> /dev/null
3091e6f1ceSSteven Rostedt (Red Hat)                rmdir foo 2> /dev/null
3191e6f1ceSSteven Rostedt (Red Hat)        done
3291e6f1ceSSteven Rostedt (Red Hat)}
3391e6f1ceSSteven Rostedt (Red Hat)
3491e6f1ceSSteven Rostedt (Red Hat)instance_read() {
3591e6f1ceSSteven Rostedt (Red Hat)        while :; do
3691e6f1ceSSteven Rostedt (Red Hat)                cat foo/trace 1> /dev/null 2>&1
3791e6f1ceSSteven Rostedt (Red Hat)        done
3891e6f1ceSSteven Rostedt (Red Hat)}
3991e6f1ceSSteven Rostedt (Red Hat)
4091e6f1ceSSteven Rostedt (Red Hat)instance_set() {
4191e6f1ceSSteven Rostedt (Red Hat)        while :; do
42*f4e4ada5SZheng Yejian                echo 1 > foo/events/sched/sched_switch/enable
4391e6f1ceSSteven Rostedt (Red Hat)        done 2> /dev/null
4491e6f1ceSSteven Rostedt (Red Hat)}
4591e6f1ceSSteven Rostedt (Red Hat)
4691e6f1ceSSteven Rostedt (Red Hat)instance_slam &
4791e6f1ceSSteven Rostedt (Red Hat)p1=$!
4891e6f1ceSSteven Rostedt (Red Hat)echo $p1
4991e6f1ceSSteven Rostedt (Red Hat)
5091e6f1ceSSteven Rostedt (Red Hat)instance_set &
5191e6f1ceSSteven Rostedt (Red Hat)p2=$!
5291e6f1ceSSteven Rostedt (Red Hat)echo $p2
5391e6f1ceSSteven Rostedt (Red Hat)
5491e6f1ceSSteven Rostedt (Red Hat)instance_read &
5591e6f1ceSSteven Rostedt (Red Hat)p3=$!
5691e6f1ceSSteven Rostedt (Red Hat)echo $p3
5791e6f1ceSSteven Rostedt (Red Hat)
5891e6f1ceSSteven Rostedt (Red Hat)sleep 1
5991e6f1ceSSteven Rostedt (Red Hat)
6091e6f1ceSSteven Rostedt (Red Hat)kill -1 $p3
6191e6f1ceSSteven Rostedt (Red Hat)kill -1 $p2
6291e6f1ceSSteven Rostedt (Red Hat)kill -1 $p1
6391e6f1ceSSteven Rostedt (Red Hat)
6491e6f1ceSSteven Rostedt (Red Hat)echo "Wait for processes to finish"
6591e6f1ceSSteven Rostedt (Red Hat)wait $p1 $p2 $p3
6691e6f1ceSSteven Rostedt (Red Hat)echo "all processes finished, wait for cleanup"
6791e6f1ceSSteven Rostedt (Red Hat)sleep 1
6891e6f1ceSSteven Rostedt (Red Hat)
6991e6f1ceSSteven Rostedt (Red Hat)mkdir foo
7091e6f1ceSSteven Rostedt (Red Hat)ls foo > /dev/null
7191e6f1ceSSteven Rostedt (Red Hat)rmdir foo
7291e6f1ceSSteven Rostedt (Red Hat)if [ -d foo ]; then
7391e6f1ceSSteven Rostedt (Red Hat)        fail "foo still exists"
7491e6f1ceSSteven Rostedt (Red Hat)fi
7591e6f1ceSSteven Rostedt (Red Hat)
76b172296bSNaveen N. Raomkdir foo
77b172296bSNaveen N. Raoecho "schedule:enable_event:sched:sched_switch" > foo/set_ftrace_filter
78b172296bSNaveen N. Raormdir foo
79b172296bSNaveen N. Raoif [ -d foo ]; then
80b172296bSNaveen N. Rao        fail "foo still exists"
81b172296bSNaveen N. Raofi
82d7b91c0bSMasami Hiramatsuif grep -q "schedule:enable_event:sched:sched_switch" ../set_ftrace_filter; then
83d7b91c0bSMasami Hiramatsu	echo "Older kernel detected. Cleanup filter"
84d7b91c0bSMasami Hiramatsu	echo '!schedule:enable_event:sched:sched_switch' > ../set_ftrace_filter
85d7b91c0bSMasami Hiramatsufi
8691e6f1ceSSteven Rostedt (Red Hat)
8791e6f1ceSSteven Rostedt (Red Hat)instance_slam() {
8891e6f1ceSSteven Rostedt (Red Hat)    while :; do
8991e6f1ceSSteven Rostedt (Red Hat)	mkdir x
9091e6f1ceSSteven Rostedt (Red Hat)	mkdir y
9191e6f1ceSSteven Rostedt (Red Hat)	mkdir z
9291e6f1ceSSteven Rostedt (Red Hat)	rmdir x
9391e6f1ceSSteven Rostedt (Red Hat)	rmdir y
9491e6f1ceSSteven Rostedt (Red Hat)	rmdir z
9591e6f1ceSSteven Rostedt (Red Hat)    done 2>/dev/null
9691e6f1ceSSteven Rostedt (Red Hat)}
9791e6f1ceSSteven Rostedt (Red Hat)
9891e6f1ceSSteven Rostedt (Red Hat)instance_slam &
9997f8827aSSteven Rostedt (Red Hat)p1=$!
10091e6f1ceSSteven Rostedt (Red Hat)echo $p1
10191e6f1ceSSteven Rostedt (Red Hat)
10291e6f1ceSSteven Rostedt (Red Hat)instance_slam &
10397f8827aSSteven Rostedt (Red Hat)p2=$!
10491e6f1ceSSteven Rostedt (Red Hat)echo $p2
10591e6f1ceSSteven Rostedt (Red Hat)
10691e6f1ceSSteven Rostedt (Red Hat)instance_slam &
10797f8827aSSteven Rostedt (Red Hat)p3=$!
10891e6f1ceSSteven Rostedt (Red Hat)echo $p3
10991e6f1ceSSteven Rostedt (Red Hat)
11091e6f1ceSSteven Rostedt (Red Hat)instance_slam &
11197f8827aSSteven Rostedt (Red Hat)p4=$!
11291e6f1ceSSteven Rostedt (Red Hat)echo $p4
11391e6f1ceSSteven Rostedt (Red Hat)
11491e6f1ceSSteven Rostedt (Red Hat)instance_slam &
11597f8827aSSteven Rostedt (Red Hat)p5=$!
11691e6f1ceSSteven Rostedt (Red Hat)echo $p5
11791e6f1ceSSteven Rostedt (Red Hat)
11891e6f1ceSSteven Rostedt (Red Hat)ls -lR >/dev/null
11991e6f1ceSSteven Rostedt (Red Hat)sleep 1
12091e6f1ceSSteven Rostedt (Red Hat)
12191e6f1ceSSteven Rostedt (Red Hat)kill -1 $p1
12291e6f1ceSSteven Rostedt (Red Hat)kill -1 $p2
12391e6f1ceSSteven Rostedt (Red Hat)kill -1 $p3
12491e6f1ceSSteven Rostedt (Red Hat)kill -1 $p4
12591e6f1ceSSteven Rostedt (Red Hat)kill -1 $p5
12691e6f1ceSSteven Rostedt (Red Hat)
12791e6f1ceSSteven Rostedt (Red Hat)echo "Wait for processes to finish"
12891e6f1ceSSteven Rostedt (Red Hat)wait $p1 $p2 $p3 $p4 $p5
12991e6f1ceSSteven Rostedt (Red Hat)echo "all processes finished, wait for cleanup"
13091e6f1ceSSteven Rostedt (Red Hat)
13191e6f1ceSSteven Rostedt (Red Hat)mkdir x y z
13291e6f1ceSSteven Rostedt (Red Hat)ls x y z
13391e6f1ceSSteven Rostedt (Red Hat)rmdir x y z
13491e6f1ceSSteven Rostedt (Red Hat)for d in x y z; do
13591e6f1ceSSteven Rostedt (Red Hat)        if [ -d $d ]; then
13691e6f1ceSSteven Rostedt (Red Hat)                fail "instance $d still exists"
13791e6f1ceSSteven Rostedt (Red Hat)        fi
13891e6f1ceSSteven Rostedt (Red Hat)done
13991e6f1ceSSteven Rostedt (Red Hat)
14091e6f1ceSSteven Rostedt (Red Hat)set -e
14191e6f1ceSSteven Rostedt (Red Hat)
14291e6f1ceSSteven Rostedt (Red Hat)exit 0
143