| #!/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 |