1 #!/bin/sh 2 # SPDX-License-Identifier: GPL-2.0 3 # description: event tracing - restricts events based on pid 4 # flags: instance 5 6 do_reset() { 7 echo > set_event 8 echo > set_event_pid 9 echo 0 > options/event-fork 10 clear_trace 11 } 12 13 fail() { #msg 14 do_reset 15 echo $1 16 exit_fail 17 } 18 19 if [ ! -f set_event -o ! -d events/sched ]; then 20 echo "event tracing is not supported" 21 exit_unsupported 22 fi 23 24 if [ ! -f set_event_pid ]; then 25 echo "event pid filtering is not supported" 26 exit_unsupported 27 fi 28 29 echo 0 > options/event-fork 30 31 echo 1 > events/sched/sched_switch/enable 32 33 yield 34 35 count=`cat trace | grep sched_switch | wc -l` 36 if [ $count -eq 0 ]; then 37 fail "sched_switch events are not recorded" 38 fi 39 40 do_reset 41 42 read mypid rest < /proc/self/stat 43 44 echo $mypid > set_event_pid 45 grep -q $mypid set_event_pid 46 echo 'sched:sched_switch' > set_event 47 48 yield 49 50 count=`cat trace | grep sched_switch | grep -v "pid=$mypid" | wc -l` 51 if [ $count -ne 0 ]; then 52 fail "sched_switch events from other task are recorded" 53 fi 54 55 do_reset 56 57 echo $mypid > set_event_pid 58 echo 1 > options/event-fork 59 echo 1 > events/sched/sched_switch/enable 60 61 yield 62 63 count=`cat trace | grep sched_switch | grep -v "pid=$mypid" | wc -l` 64 if [ $count -eq 0 ]; then 65 fail "sched_switch events from other task are not recorded" 66 fi 67 68 do_reset 69 70 exit 0 71