Home | History | Annotate | Download | only in event
      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