73 lines
1.2 KiB
Bash
73 lines
1.2 KiB
Bash
#!/bin/sh
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
# description: event tracing - enable/disable with subsystem level files
|
|
# requires: set_event events/sched/enable
|
|
# flags: instance
|
|
|
|
do_reset() {
|
|
echo > set_event
|
|
clear_trace
|
|
}
|
|
|
|
fail() { #msg
|
|
echo $1
|
|
exit_fail
|
|
}
|
|
|
|
# As reading trace can last forever, simply look for 3 different
|
|
# events then exit out of reading the file. If there's not 3 different
|
|
# events, then the test has failed.
|
|
check_unique() {
|
|
cat trace | grep -v '^#' | awk '
|
|
BEGIN { cnt = 0; }
|
|
{
|
|
for (i = 0; i < cnt; i++) {
|
|
if (event[i] == $5) {
|
|
break;
|
|
}
|
|
}
|
|
if (i == cnt) {
|
|
event[cnt++] = $5;
|
|
if (cnt > 2) {
|
|
exit;
|
|
}
|
|
}
|
|
}
|
|
END {
|
|
printf "%d", cnt;
|
|
}'
|
|
}
|
|
|
|
echo 'sched:*' > set_event
|
|
|
|
yield
|
|
|
|
count=`check_unique`
|
|
if [ $count -lt 3 ]; then
|
|
fail "at least fork, exec and exit events should be recorded"
|
|
fi
|
|
|
|
do_reset
|
|
|
|
echo 1 > events/sched/enable
|
|
|
|
yield
|
|
|
|
count=`check_unique`
|
|
if [ $count -lt 3 ]; then
|
|
fail "at least fork, exec and exit events should be recorded"
|
|
fi
|
|
|
|
do_reset
|
|
|
|
echo 0 > events/sched/enable
|
|
|
|
yield
|
|
|
|
count=`head -n 100 trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l`
|
|
if [ $count -ne 0 ]; then
|
|
fail "any of scheduler events should not be recorded"
|
|
fi
|
|
|
|
exit 0
|