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
491e6f1ceSSteven Rostedt (Red Hat)
591e6f1ceSSteven Rostedt (Red Hat)if [ ! -d instances ] ; then
691e6f1ceSSteven Rostedt (Red Hat)    echo "no instance directory with this kernel"
791e6f1ceSSteven Rostedt (Red Hat)    exit_unsupported;
891e6f1ceSSteven Rostedt (Red Hat)fi
991e6f1ceSSteven Rostedt (Red Hat)
1091e6f1ceSSteven Rostedt (Red Hat)fail() { # mesg
1191e6f1ceSSteven Rostedt (Red Hat)    rmdir foo 2>/dev/null
1291e6f1ceSSteven Rostedt (Red Hat)    echo $1
1391e6f1ceSSteven Rostedt (Red Hat)    set -e
1442534b1fSMasami Hiramatsu    exit_fail
1591e6f1ceSSteven Rostedt (Red Hat)}
1691e6f1ceSSteven Rostedt (Red Hat)
1791e6f1ceSSteven Rostedt (Red Hat)cd instances
1891e6f1ceSSteven Rostedt (Red Hat)
1991e6f1ceSSteven Rostedt (Red Hat)# we don't want to fail on error
2091e6f1ceSSteven Rostedt (Red Hat)set +e
2191e6f1ceSSteven Rostedt (Red Hat)
2291e6f1ceSSteven Rostedt (Red Hat)mkdir x
2391e6f1ceSSteven Rostedt (Red Hat)rmdir x
2491e6f1ceSSteven Rostedt (Red Hat)result=$?
2591e6f1ceSSteven Rostedt (Red Hat)
2691e6f1ceSSteven Rostedt (Red Hat)if [ $result -ne 0 ]; then
2791e6f1ceSSteven Rostedt (Red Hat)    echo "instance rmdir not supported"
2891e6f1ceSSteven Rostedt (Red Hat)    exit_unsupported
2991e6f1ceSSteven Rostedt (Red Hat)fi
3091e6f1ceSSteven Rostedt (Red Hat)
3191e6f1ceSSteven Rostedt (Red Hat)instance_slam() {
3291e6f1ceSSteven Rostedt (Red Hat)        while :; do
3391e6f1ceSSteven Rostedt (Red Hat)                mkdir foo 2> /dev/null
3491e6f1ceSSteven Rostedt (Red Hat)                rmdir foo 2> /dev/null
3591e6f1ceSSteven Rostedt (Red Hat)        done
3691e6f1ceSSteven Rostedt (Red Hat)}
3791e6f1ceSSteven Rostedt (Red Hat)
3891e6f1ceSSteven Rostedt (Red Hat)instance_read() {
3991e6f1ceSSteven Rostedt (Red Hat)        while :; do
4091e6f1ceSSteven Rostedt (Red Hat)                cat foo/trace 1> /dev/null 2>&1
4191e6f1ceSSteven Rostedt (Red Hat)        done
4291e6f1ceSSteven Rostedt (Red Hat)}
4391e6f1ceSSteven Rostedt (Red Hat)
4491e6f1ceSSteven Rostedt (Red Hat)instance_set() {
4591e6f1ceSSteven Rostedt (Red Hat)        while :; do
4691e6f1ceSSteven Rostedt (Red Hat)                echo 1 > foo/events/sched/sched_switch
4791e6f1ceSSteven Rostedt (Red Hat)        done 2> /dev/null
4891e6f1ceSSteven Rostedt (Red Hat)}
4991e6f1ceSSteven Rostedt (Red Hat)
5091e6f1ceSSteven Rostedt (Red Hat)instance_slam &
5191e6f1ceSSteven Rostedt (Red Hat)p1=$!
5291e6f1ceSSteven Rostedt (Red Hat)echo $p1
5391e6f1ceSSteven Rostedt (Red Hat)
5491e6f1ceSSteven Rostedt (Red Hat)instance_set &
5591e6f1ceSSteven Rostedt (Red Hat)p2=$!
5691e6f1ceSSteven Rostedt (Red Hat)echo $p2
5791e6f1ceSSteven Rostedt (Red Hat)
5891e6f1ceSSteven Rostedt (Red Hat)instance_read &
5991e6f1ceSSteven Rostedt (Red Hat)p3=$!
6091e6f1ceSSteven Rostedt (Red Hat)echo $p3
6191e6f1ceSSteven Rostedt (Red Hat)
6291e6f1ceSSteven Rostedt (Red Hat)sleep 1
6391e6f1ceSSteven Rostedt (Red Hat)
6491e6f1ceSSteven Rostedt (Red Hat)kill -1 $p3
6591e6f1ceSSteven Rostedt (Red Hat)kill -1 $p2
6691e6f1ceSSteven Rostedt (Red Hat)kill -1 $p1
6791e6f1ceSSteven Rostedt (Red Hat)
6891e6f1ceSSteven Rostedt (Red Hat)echo "Wait for processes to finish"
6991e6f1ceSSteven Rostedt (Red Hat)wait $p1 $p2 $p3
7091e6f1ceSSteven Rostedt (Red Hat)echo "all processes finished, wait for cleanup"
7191e6f1ceSSteven Rostedt (Red Hat)sleep 1
7291e6f1ceSSteven Rostedt (Red Hat)
7391e6f1ceSSteven Rostedt (Red Hat)mkdir foo
7491e6f1ceSSteven Rostedt (Red Hat)ls foo > /dev/null
7591e6f1ceSSteven Rostedt (Red Hat)rmdir foo
7691e6f1ceSSteven Rostedt (Red Hat)if [ -d foo ]; then
7791e6f1ceSSteven Rostedt (Red Hat)        fail "foo still exists"
7891e6f1ceSSteven Rostedt (Red Hat)fi
7991e6f1ceSSteven Rostedt (Red Hat)
80b172296bSNaveen N. Raomkdir foo
81b172296bSNaveen N. Raoecho "schedule:enable_event:sched:sched_switch" > foo/set_ftrace_filter
82b172296bSNaveen N. Raormdir foo
83b172296bSNaveen N. Raoif [ -d foo ]; then
84b172296bSNaveen N. Rao        fail "foo still exists"
85b172296bSNaveen N. Raofi
86d7b91c0bSMasami Hiramatsuif grep -q "schedule:enable_event:sched:sched_switch" ../set_ftrace_filter; then
87d7b91c0bSMasami Hiramatsu	echo "Older kernel detected. Cleanup filter"
88d7b91c0bSMasami Hiramatsu	echo '!schedule:enable_event:sched:sched_switch' > ../set_ftrace_filter
89d7b91c0bSMasami Hiramatsufi
9091e6f1ceSSteven Rostedt (Red Hat)
9191e6f1ceSSteven Rostedt (Red Hat)instance_slam() {
9291e6f1ceSSteven Rostedt (Red Hat)    while :; do
9391e6f1ceSSteven Rostedt (Red Hat)	mkdir x
9491e6f1ceSSteven Rostedt (Red Hat)	mkdir y
9591e6f1ceSSteven Rostedt (Red Hat)	mkdir z
9691e6f1ceSSteven Rostedt (Red Hat)	rmdir x
9791e6f1ceSSteven Rostedt (Red Hat)	rmdir y
9891e6f1ceSSteven Rostedt (Red Hat)	rmdir z
9991e6f1ceSSteven Rostedt (Red Hat)    done 2>/dev/null
10091e6f1ceSSteven Rostedt (Red Hat)}
10191e6f1ceSSteven Rostedt (Red Hat)
10291e6f1ceSSteven Rostedt (Red Hat)instance_slam &
10397f8827aSSteven Rostedt (Red Hat)p1=$!
10491e6f1ceSSteven Rostedt (Red Hat)echo $p1
10591e6f1ceSSteven Rostedt (Red Hat)
10691e6f1ceSSteven Rostedt (Red Hat)instance_slam &
10797f8827aSSteven Rostedt (Red Hat)p2=$!
10891e6f1ceSSteven Rostedt (Red Hat)echo $p2
10991e6f1ceSSteven Rostedt (Red Hat)
11091e6f1ceSSteven Rostedt (Red Hat)instance_slam &
11197f8827aSSteven Rostedt (Red Hat)p3=$!
11291e6f1ceSSteven Rostedt (Red Hat)echo $p3
11391e6f1ceSSteven Rostedt (Red Hat)
11491e6f1ceSSteven Rostedt (Red Hat)instance_slam &
11597f8827aSSteven Rostedt (Red Hat)p4=$!
11691e6f1ceSSteven Rostedt (Red Hat)echo $p4
11791e6f1ceSSteven Rostedt (Red Hat)
11891e6f1ceSSteven Rostedt (Red Hat)instance_slam &
11997f8827aSSteven Rostedt (Red Hat)p5=$!
12091e6f1ceSSteven Rostedt (Red Hat)echo $p5
12191e6f1ceSSteven Rostedt (Red Hat)
12291e6f1ceSSteven Rostedt (Red Hat)ls -lR >/dev/null
12391e6f1ceSSteven Rostedt (Red Hat)sleep 1
12491e6f1ceSSteven Rostedt (Red Hat)
12591e6f1ceSSteven Rostedt (Red Hat)kill -1 $p1
12691e6f1ceSSteven Rostedt (Red Hat)kill -1 $p2
12791e6f1ceSSteven Rostedt (Red Hat)kill -1 $p3
12891e6f1ceSSteven Rostedt (Red Hat)kill -1 $p4
12991e6f1ceSSteven Rostedt (Red Hat)kill -1 $p5
13091e6f1ceSSteven Rostedt (Red Hat)
13191e6f1ceSSteven Rostedt (Red Hat)echo "Wait for processes to finish"
13291e6f1ceSSteven Rostedt (Red Hat)wait $p1 $p2 $p3 $p4 $p5
13391e6f1ceSSteven Rostedt (Red Hat)echo "all processes finished, wait for cleanup"
13491e6f1ceSSteven Rostedt (Red Hat)
13591e6f1ceSSteven Rostedt (Red Hat)mkdir x y z
13691e6f1ceSSteven Rostedt (Red Hat)ls x y z
13791e6f1ceSSteven Rostedt (Red Hat)rmdir x y z
13891e6f1ceSSteven Rostedt (Red Hat)for d in x y z; do
13991e6f1ceSSteven Rostedt (Red Hat)        if [ -d $d ]; then
14091e6f1ceSSteven Rostedt (Red Hat)                fail "instance $d still exists"
14191e6f1ceSSteven Rostedt (Red Hat)        fi
14291e6f1ceSSteven Rostedt (Red Hat)done
14391e6f1ceSSteven Rostedt (Red Hat)
14491e6f1ceSSteven Rostedt (Red Hat)set -e
14591e6f1ceSSteven Rostedt (Red Hat)
14691e6f1ceSSteven Rostedt (Red Hat)exit 0
147