#!/bin/sh
# description: event tracing - restricts events based on pid
# flags: instance

do_reset() {
    echo > set_event
    echo > set_event_pid
    echo 0 > options/event-fork
    clear_trace
}

fail() { #msg
    do_reset
    echo $1
    exit $FAIL
}

yield() {
    ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1
}

if [ ! -f set_event -o ! -d events/sched ]; then
    echo "event tracing is not supported"
    exit_unsupported
fi

if [ ! -f set_event_pid ]; then
    echo "event pid filtering is not supported"
    exit_unsupported
fi

reset_tracer
do_reset

echo 1 > events/sched/sched_switch/enable

yield

count=`cat trace | grep sched_switch | wc -l`
if [ $count -eq 0 ]; then
    fail "sched_switch events are not recorded"
fi

do_reset

read mypid rest < /proc/self/stat

echo $mypid > set_event_pid
echo 'sched:sched_switch' > set_event

yield

count=`cat trace | grep sched_switch | grep -v "pid=$mypid" | wc -l`
if [ $count -ne 0 ]; then
    fail "sched_switch events from other task are recorded"
fi

do_reset

echo $mypid > set_event_pid
echo 1 > options/event-fork
echo 1 > events/sched/sched_switch/enable

yield

count=`cat trace | grep sched_switch | grep -v "pid=$mypid" | wc -l`
if [ $count -eq 0 ]; then
    fail "sched_switch events from other task are not recorded"
fi

do_reset

exit 0
