0001
0002
0003
0004
0005
0006
0007 do_reset() {
0008 echo > set_event
0009 echo > set_event_pid
0010 echo > set_event_notrace_pid
0011 echo 0 > options/event-fork
0012 echo 0 > events/enable
0013 clear_trace
0014 echo 1 > tracing_on
0015 }
0016
0017 fail() {
0018 cat trace
0019 do_reset
0020 echo $1
0021 exit_fail
0022 }
0023
0024 count_pid() {
0025 pid=$@
0026 cat trace | grep -v '^#' | sed -e 's/[^-]*-\([0-9]*\).*/\1/' | grep $pid | wc -l
0027 }
0028
0029 count_no_pid() {
0030 pid=$1
0031 cat trace | grep -v '^#' | sed -e 's/[^-]*-\([0-9]*\).*/\1/' | grep -v $pid | wc -l
0032 }
0033
0034 enable_system() {
0035 system=$1
0036
0037 if [ -d events/$system ]; then
0038 echo 1 > events/$system/enable
0039 fi
0040 }
0041
0042 enable_events() {
0043 echo 0 > tracing_on
0044
0045
0046 enable_system syscalls
0047 enable_system rcu
0048 enable_system block
0049 enable_system exceptions
0050 enable_system irq
0051 enable_system net
0052 enable_system power
0053 enable_system signal
0054 enable_system sock
0055 enable_system timer
0056 enable_system thermal
0057 echo 1 > tracing_on
0058 }
0059
0060 other_task() {
0061 sleep .001 || usleep 1 || sleep 1
0062 }
0063
0064 echo 0 > options/event-fork
0065
0066 do_reset
0067
0068 read mypid rest < /proc/self/stat
0069
0070 echo $mypid > set_event_notrace_pid
0071 grep -q $mypid set_event_notrace_pid
0072
0073 enable_events
0074
0075 yield
0076
0077 echo 0 > tracing_on
0078
0079 cnt=`count_pid $mypid`
0080 if [ $cnt -ne 0 ]; then
0081 fail "Filtered out task has events"
0082 fi
0083
0084 cnt=`count_no_pid $mypid`
0085 if [ $cnt -eq 0 ]; then
0086 fail "No other events were recorded"
0087 fi
0088
0089 do_reset
0090
0091 echo $mypid > set_event_notrace_pid
0092 echo 1 > options/event-fork
0093
0094 enable_events
0095
0096 yield &
0097 child=$!
0098 echo "child = $child"
0099 wait $child
0100
0101
0102 other_task
0103
0104 echo 0 > tracing_on
0105
0106 cnt=`count_pid $mypid`
0107 if [ $cnt -ne 0 ]; then
0108 fail "Filtered out task has events"
0109 fi
0110
0111 cnt=`count_pid $child`
0112 if [ $cnt -ne 0 ]; then
0113 fail "Child of filtered out taskhas events"
0114 fi
0115
0116 cnt=`count_no_pid $mypid`
0117 if [ $cnt -eq 0 ]; then
0118 fail "No other events were recorded"
0119 fi
0120
0121 do_reset
0122
0123 exit 0