1ebed9628SSteven Rostedt (VMware)#!/bin/sh 2ebed9628SSteven Rostedt (VMware)# SPDX-License-Identifier: GPL-2.0 3ebed9628SSteven Rostedt (VMware)# description: event tracing - restricts events based on pid notrace filtering 43591e90fSMasami Hiramatsu# requires: set_event events/sched set_event_pid set_event_notrace_pid 5ebed9628SSteven Rostedt (VMware)# flags: instance 6ebed9628SSteven Rostedt (VMware) 7ebed9628SSteven Rostedt (VMware)do_reset() { 8ebed9628SSteven Rostedt (VMware) echo > set_event 9ebed9628SSteven Rostedt (VMware) echo > set_event_pid 10ebed9628SSteven Rostedt (VMware) echo > set_event_notrace_pid 11ebed9628SSteven Rostedt (VMware) echo 0 > options/event-fork 12ebed9628SSteven Rostedt (VMware) echo 0 > events/enable 13ebed9628SSteven Rostedt (VMware) clear_trace 14ebed9628SSteven Rostedt (VMware) echo 1 > tracing_on 15ebed9628SSteven Rostedt (VMware)} 16ebed9628SSteven Rostedt (VMware) 17ebed9628SSteven Rostedt (VMware)fail() { #msg 18ebed9628SSteven Rostedt (VMware) cat trace 19ebed9628SSteven Rostedt (VMware) do_reset 20ebed9628SSteven Rostedt (VMware) echo $1 21ebed9628SSteven Rostedt (VMware) exit_fail 22ebed9628SSteven Rostedt (VMware)} 23ebed9628SSteven Rostedt (VMware) 24ebed9628SSteven Rostedt (VMware)count_pid() { 25ebed9628SSteven Rostedt (VMware) pid=$@ 26ebed9628SSteven Rostedt (VMware) cat trace | grep -v '^#' | sed -e 's/[^-]*-\([0-9]*\).*/\1/' | grep $pid | wc -l 27ebed9628SSteven Rostedt (VMware)} 28ebed9628SSteven Rostedt (VMware) 29ebed9628SSteven Rostedt (VMware)count_no_pid() { 30ebed9628SSteven Rostedt (VMware) pid=$1 31ebed9628SSteven Rostedt (VMware) cat trace | grep -v '^#' | sed -e 's/[^-]*-\([0-9]*\).*/\1/' | grep -v $pid | wc -l 32ebed9628SSteven Rostedt (VMware)} 33ebed9628SSteven Rostedt (VMware) 34ebed9628SSteven Rostedt (VMware)enable_system() { 35ebed9628SSteven Rostedt (VMware) system=$1 36ebed9628SSteven Rostedt (VMware) 37ebed9628SSteven Rostedt (VMware) if [ -d events/$system ]; then 38ebed9628SSteven Rostedt (VMware) echo 1 > events/$system/enable 39ebed9628SSteven Rostedt (VMware) fi 40ebed9628SSteven Rostedt (VMware)} 41ebed9628SSteven Rostedt (VMware) 42ebed9628SSteven Rostedt (VMware)enable_events() { 43ebed9628SSteven Rostedt (VMware) echo 0 > tracing_on 44ebed9628SSteven Rostedt (VMware) # Enable common groups of events, as all events can allow for 45ebed9628SSteven Rostedt (VMware) # events to be traced via scheduling that we don't care to test. 46ebed9628SSteven Rostedt (VMware) enable_system syscalls 47ebed9628SSteven Rostedt (VMware) enable_system rcu 48ebed9628SSteven Rostedt (VMware) enable_system block 49ebed9628SSteven Rostedt (VMware) enable_system exceptions 50ebed9628SSteven Rostedt (VMware) enable_system irq 51ebed9628SSteven Rostedt (VMware) enable_system net 52ebed9628SSteven Rostedt (VMware) enable_system power 53ebed9628SSteven Rostedt (VMware) enable_system signal 54ebed9628SSteven Rostedt (VMware) enable_system sock 55ebed9628SSteven Rostedt (VMware) enable_system timer 56ebed9628SSteven Rostedt (VMware) enable_system thermal 57ebed9628SSteven Rostedt (VMware) echo 1 > tracing_on 58ebed9628SSteven Rostedt (VMware)} 59ebed9628SSteven Rostedt (VMware) 60*07b60713SKrzysztof Kozlowskiother_task() { 61*07b60713SKrzysztof Kozlowski sleep .001 || usleep 1 || sleep 1 62*07b60713SKrzysztof Kozlowski} 63*07b60713SKrzysztof Kozlowski 64ebed9628SSteven Rostedt (VMware)echo 0 > options/event-fork 65ebed9628SSteven Rostedt (VMware) 66ebed9628SSteven Rostedt (VMware)do_reset 67ebed9628SSteven Rostedt (VMware) 68ebed9628SSteven Rostedt (VMware)read mypid rest < /proc/self/stat 69ebed9628SSteven Rostedt (VMware) 70ebed9628SSteven Rostedt (VMware)echo $mypid > set_event_notrace_pid 71ebed9628SSteven Rostedt (VMware)grep -q $mypid set_event_notrace_pid 72ebed9628SSteven Rostedt (VMware) 73ebed9628SSteven Rostedt (VMware)enable_events 74ebed9628SSteven Rostedt (VMware) 75ebed9628SSteven Rostedt (VMware)yield 76ebed9628SSteven Rostedt (VMware) 77ebed9628SSteven Rostedt (VMware)echo 0 > tracing_on 78ebed9628SSteven Rostedt (VMware) 79ebed9628SSteven Rostedt (VMware)cnt=`count_pid $mypid` 80ebed9628SSteven Rostedt (VMware)if [ $cnt -ne 0 ]; then 81ebed9628SSteven Rostedt (VMware) fail "Filtered out task has events" 82ebed9628SSteven Rostedt (VMware)fi 83ebed9628SSteven Rostedt (VMware) 84ebed9628SSteven Rostedt (VMware)cnt=`count_no_pid $mypid` 85ebed9628SSteven Rostedt (VMware)if [ $cnt -eq 0 ]; then 86ebed9628SSteven Rostedt (VMware) fail "No other events were recorded" 87ebed9628SSteven Rostedt (VMware)fi 88ebed9628SSteven Rostedt (VMware) 89ebed9628SSteven Rostedt (VMware)do_reset 90ebed9628SSteven Rostedt (VMware) 91ebed9628SSteven Rostedt (VMware)echo $mypid > set_event_notrace_pid 92ebed9628SSteven Rostedt (VMware)echo 1 > options/event-fork 93ebed9628SSteven Rostedt (VMware) 94ebed9628SSteven Rostedt (VMware)enable_events 95ebed9628SSteven Rostedt (VMware) 96ebed9628SSteven Rostedt (VMware)yield & 97ebed9628SSteven Rostedt (VMware)child=$! 98ebed9628SSteven Rostedt (VMware)echo "child = $child" 99ebed9628SSteven Rostedt (VMware)wait $child 100ebed9628SSteven Rostedt (VMware) 101*07b60713SKrzysztof Kozlowski# Be sure some other events will happen for small systems (e.g. 1 core) 102*07b60713SKrzysztof Kozlowskiother_task 103*07b60713SKrzysztof Kozlowski 104ebed9628SSteven Rostedt (VMware)echo 0 > tracing_on 105ebed9628SSteven Rostedt (VMware) 106ebed9628SSteven Rostedt (VMware)cnt=`count_pid $mypid` 107ebed9628SSteven Rostedt (VMware)if [ $cnt -ne 0 ]; then 108ebed9628SSteven Rostedt (VMware) fail "Filtered out task has events" 109ebed9628SSteven Rostedt (VMware)fi 110ebed9628SSteven Rostedt (VMware) 111ebed9628SSteven Rostedt (VMware)cnt=`count_pid $child` 112ebed9628SSteven Rostedt (VMware)if [ $cnt -ne 0 ]; then 113ebed9628SSteven Rostedt (VMware) fail "Child of filtered out taskhas events" 114ebed9628SSteven Rostedt (VMware)fi 115ebed9628SSteven Rostedt (VMware) 116ebed9628SSteven Rostedt (VMware)cnt=`count_no_pid $mypid` 117ebed9628SSteven Rostedt (VMware)if [ $cnt -eq 0 ]; then 118ebed9628SSteven Rostedt (VMware) fail "No other events were recorded" 119ebed9628SSteven Rostedt (VMware)fi 120ebed9628SSteven Rostedt (VMware) 121ebed9628SSteven Rostedt (VMware)do_reset 122ebed9628SSteven Rostedt (VMware) 123ebed9628SSteven Rostedt (VMware)exit 0 124