#!/bin/sh # SPDX-License-Identifier: GPL-2.0 # description: event trigger - test poll wait on histogram # requires: set_event events/sched/sched_process_free/trigger events/sched/sched_process_free/hist # flags: instance POLL=${FTRACETEST_ROOT}/poll if [ ! -x ${POLL} ]; then echo "poll program is not compiled!" exit_unresolved fi EVENT=events/sched/sched_process_free/ # Check poll ops is supported. Before implementing poll on hist file, it # returns soon with POLLIN | POLLOUT, but not POLLPRI. # This must wait >1 sec and return 1 (timeout). set +e ${POLL} -I -t 1000 ${EVENT}/hist ret=$? set -e if [ ${ret} != 1 ]; then echo "poll on hist file is not supported" exit_unsupported fi # Test POLLIN echo > trace echo 'hist:key=comm if comm =="sleep"' > ${EVENT}/trigger echo 1 > ${EVENT}/enable # This sleep command will exit after 2 seconds. sleep 2 & BGPID=$! # if timeout happens, poll returns 1. ${POLL} -I -t 4000 ${EVENT}/hist echo 0 > tracing_on if [ -d /proc/${BGPID} ]; then echo "poll exits too soon" kill -KILL ${BGPID} ||: exit_fail fi if ! grep -qw "sleep" trace; then echo "poll exits before event happens" exit_fail fi # Test POLLPRI echo > trace echo 1 > tracing_on # This sleep command will exit after 2 seconds. sleep 2 & BGPID=$! # if timeout happens, poll returns 1. ${POLL} -P -t 4000 ${EVENT}/hist echo 0 > tracing_on if [ -d /proc/${BGPID} ]; then echo "poll exits too soon" kill -KILL ${BGPID} ||: exit_fail fi if ! grep -qw "sleep" trace; then echo "poll exits before event happens" exit_fail fi exit_pass