162306a36Sopenharmony_ci#!/bin/sh
262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
362306a36Sopenharmony_ci# description: event tracing - restricts events based on pid
462306a36Sopenharmony_ci# requires: set_event set_event_pid events/sched
562306a36Sopenharmony_ci# flags: instance
662306a36Sopenharmony_ci
762306a36Sopenharmony_cido_reset() {
862306a36Sopenharmony_ci    echo > set_event
962306a36Sopenharmony_ci    echo > set_event_pid
1062306a36Sopenharmony_ci    echo 0 > options/event-fork
1162306a36Sopenharmony_ci    clear_trace
1262306a36Sopenharmony_ci}
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_cifail() { #msg
1562306a36Sopenharmony_ci    do_reset
1662306a36Sopenharmony_ci    echo $1
1762306a36Sopenharmony_ci    exit_fail
1862306a36Sopenharmony_ci}
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciecho 0 > options/event-fork
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciecho 1 > events/sched/sched_switch/enable
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciyield
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_cicount=`cat trace | grep sched_switch | wc -l`
2762306a36Sopenharmony_ciif [ $count -eq 0 ]; then
2862306a36Sopenharmony_ci    fail "sched_switch events are not recorded"
2962306a36Sopenharmony_cifi
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_cido_reset
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ciread mypid rest < /proc/self/stat
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ciecho $mypid > set_event_pid
3662306a36Sopenharmony_cigrep -q $mypid set_event_pid
3762306a36Sopenharmony_ciecho 'sched:sched_switch' > set_event
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ciyield
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_cicount=`cat trace | grep sched_switch | grep -v "pid=$mypid" | wc -l`
4262306a36Sopenharmony_ciif [ $count -ne 0 ]; then
4362306a36Sopenharmony_ci    fail "sched_switch events from other task are recorded"
4462306a36Sopenharmony_cifi
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_cido_reset
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ciecho $mypid > set_event_pid
4962306a36Sopenharmony_ciecho 1 > options/event-fork
5062306a36Sopenharmony_ciecho 1 > events/sched/sched_switch/enable
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ciyield
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_cicount=`cat trace | grep sched_switch | grep -v "pid=$mypid" | wc -l`
5562306a36Sopenharmony_ciif [ $count -eq 0 ]; then
5662306a36Sopenharmony_ci    fail "sched_switch events from other task are not recorded"
5762306a36Sopenharmony_cifi
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_cido_reset
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ciexit 0
62