brintos

brintos / linux-shallow public Read only

0
0
Text · 2.2 KiB · 9933ed2 Raw
124 lines · plain
1#!/bin/sh2# SPDX-License-Identifier: GPL-2.03# description: event tracing - restricts events based on pid notrace filtering4# requires: set_event events/sched set_event_pid set_event_notrace_pid5# flags: instance6 7do_reset() {8    echo > set_event9    echo > set_event_pid10    echo > set_event_notrace_pid11    echo 0 > options/event-fork12    echo 0 > events/enable13    clear_trace14    echo 1 > tracing_on15}16 17fail() { #msg18    cat trace19    do_reset20    echo $121    exit_fail22}23 24count_pid() {25    pid=$@26    cat trace | grep -v '^#' | sed -e 's/[^-]*-\([0-9]*\).*/\1/' | grep $pid | wc -l27}28 29count_no_pid() {30    pid=$131    cat trace | grep -v '^#' | sed -e 's/[^-]*-\([0-9]*\).*/\1/' | grep -v $pid | wc -l32}33 34enable_system() {35    system=$136 37    if [ -d events/$system ]; then38	echo 1 > events/$system/enable39    fi40}41 42enable_events() {43    echo 0 > tracing_on44    # Enable common groups of events, as all events can allow for45    # events to be traced via scheduling that we don't care to test.46    enable_system syscalls47    enable_system rcu48    enable_system block49    enable_system exceptions50    enable_system irq51    enable_system net52    enable_system power53    enable_system signal54    enable_system sock55    enable_system timer56    enable_system thermal57    echo 1 > tracing_on58}59 60other_task() {61    sleep .001 || usleep 1 || sleep 162}63 64echo 0 > options/event-fork65 66do_reset67 68read mypid rest < /proc/self/stat69 70echo $mypid > set_event_notrace_pid71grep -q $mypid set_event_notrace_pid72 73enable_events74 75yield76 77echo 0 > tracing_on78 79cnt=`count_pid $mypid`80if [ $cnt -ne 0 ]; then81    fail "Filtered out task has events"82fi83 84cnt=`count_no_pid $mypid`85if [ $cnt -eq 0 ]; then86    fail "No other events were recorded"87fi88 89do_reset90 91echo $mypid > set_event_notrace_pid92echo 1 > options/event-fork93 94enable_events95 96yield &97child=$!98echo "child = $child"99wait $child100 101# Be sure some other events will happen for small systems (e.g. 1 core)102other_task103 104echo 0 > tracing_on105 106cnt=`count_pid $mypid`107if [ $cnt -ne 0 ]; then108    fail "Filtered out task has events"109fi110 111cnt=`count_pid $child`112if [ $cnt -ne 0 ]; then113    fail "Child of filtered out taskhas events"114fi115 116cnt=`count_no_pid $mypid`117if [ $cnt -eq 0 ]; then118    fail "No other events were recorded"119fi120 121do_reset122 123exit 0124