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