#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: event tracing - restricts events based on pid notrace filtering
# requires: set_event events/sched set_event_pid set_event_notrace_pid
# flags: instance

do_reset() {
    echo > set_event
    echo > set_event_pid
    echo > set_event_notrace_pid
    echo 0 > options/event-fork
    echo 0 > events/enable
    clear_trace
    echo 1 > tracing_on
}

fail() { #msg
    cat trace
    do_reset
    echo $1
    exit_fail
}

count_pid() {
    pid=$@
    cat trace | grep -v '^#' | sed -e 's/[^-]*-\([0-9]*\).*/\1/' | grep $pid | wc -l
}

count_no_pid() {
    pid=$1
    cat trace | grep -v '^#' | sed -e 's/[^-]*-\([0-9]*\).*/\1/' | grep -v $pid | wc -l
}

enable_system() {
    system=$1

    if [ -d events/$system ]; then
	echo 1 > events/$system/enable
    fi
}

enable_events() {
    echo 0 > tracing_on
    # Enable common groups of events, as all events can allow for
    # events to be traced via scheduling that we don't care to test.
    enable_system syscalls
    enable_system rcu
    enable_system block
    enable_system exceptions
    enable_system irq
    enable_system net
    enable_system power
    enable_system signal
    enable_system sock
    enable_system timer
    enable_system thermal
    echo 1 > tracing_on
}

other_task() {
    sleep .001 || usleep 1 || sleep 1
}

echo 0 > options/event-fork

do_reset

read mypid rest < /proc/self/stat

echo $mypid > set_event_notrace_pid
grep -q $mypid set_event_notrace_pid

enable_events

yield

echo 0 > tracing_on

cnt=`count_pid $mypid`
if [ $cnt -ne 0 ]; then
    fail "Filtered out task has events"
fi

cnt=`count_no_pid $mypid`
if [ $cnt -eq 0 ]; then
    fail "No other events were recorded"
fi

do_reset

echo $mypid > set_event_notrace_pid
echo 1 > options/event-fork

enable_events

yield &
child=$!
echo "child = $child"
wait $child

# Be sure some other events will happen for small systems (e.g. 1 core)
other_task

echo 0 > tracing_on

cnt=`count_pid $mypid`
if [ $cnt -ne 0 ]; then
    fail "Filtered out task has events"
fi

cnt=`count_pid $child`
if [ $cnt -ne 0 ]; then
    fail "Child of filtered out taskhas events"
fi

cnt=`count_no_pid $mypid`
if [ $cnt -eq 0 ]; then
    fail "No other events were recorded"
fi

do_reset

exit 0
