| #!/bin/sh | |
| # SPDX-License-Identifier: GPL-2.0 | |
| # description: event trigger - test poll wait on histogram | |
| # requires: set_event events/sched/sched_process_exit/trigger events/sched/sched_process_exit/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_exit/ | |
| # 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 |