1130803Smarcel#!/bin/sh 2130803Smarcel# SPDX-License-Identifier: GPL-2.0 3130803Smarcel# description: event tracing - restricts events based on pid 4130803Smarcel# requires: set_event set_event_pid events/sched 5130803Smarcel# flags: instance 6130803Smarcel 7130803Smarceldo_reset() { 8130803Smarcel echo > set_event 9130803Smarcel echo > set_event_pid 10130803Smarcel echo 0 > options/event-fork 11130803Smarcel clear_trace 12130803Smarcel} 13130803Smarcel 14130803Smarcelfail() { #msg 15130803Smarcel do_reset 16130803Smarcel echo $1 17130803Smarcel exit_fail 18130803Smarcel} 19130803Smarcel 20130803Smarcelecho 0 > options/event-fork 21130803Smarcel 22130803Smarcelecho 1 > events/sched/sched_switch/enable 23130803Smarcel 24130803Smarcelyield 25130803Smarcel 26130803Smarcelcount=`cat trace | grep sched_switch | wc -l` 27130803Smarcelif [ $count -eq 0 ]; then 28130803Smarcel fail "sched_switch events are not recorded" 29130803Smarcelfi 30130803Smarcel 31130803Smarceldo_reset 32130803Smarcel 33130803Smarcelread mypid rest < /proc/self/stat 34130803Smarcel 35130803Smarcelecho $mypid > set_event_pid 36130803Smarcelgrep -q $mypid set_event_pid 37130803Smarcelecho 'sched:sched_switch' > set_event 38130803Smarcel 39130803Smarcelyield 40130803Smarcel 41130803Smarcelcount=`cat trace | grep sched_switch | grep -v "pid=$mypid" | wc -l` 42130803Smarcelif [ $count -ne 0 ]; then 43130803Smarcel fail "sched_switch events from other task are recorded" 44130803Smarcelfi 45130803Smarcel 46130803Smarceldo_reset 47130803Smarcel 48130803Smarcelecho $mypid > set_event_pid 49130803Smarcelecho 1 > options/event-fork 50130803Smarcelecho 1 > events/sched/sched_switch/enable 51130803Smarcel 52130803Smarcelyield 53130803Smarcel 54130803Smarcelcount=`cat trace | grep sched_switch | grep -v "pid=$mypid" | wc -l` 55130803Smarcelif [ $count -eq 0 ]; then 56130803Smarcel fail "sched_switch events from other task are not recorded" 57130803Smarcelfi 58130803Smarcel 59130803Smarceldo_reset 60130803Smarcel 61130803Smarcelexit 0 62130803Smarcel