#!/bin/bash # # Copyright (C) 2023 Masatake YAMATO # # This file is part of util-linux. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # TS_TOPDIR="${0%/*}/../.." TS_DESC="timerfd" . "$TS_TOPDIR"/functions.sh ts_init "$*" ts_check_test_command "$TS_CMD_LSFD" ts_check_test_command "$TS_HELPER_MKFDS" ts_cd "$TS_OUTDIR" PID= FD=3 EXPR= { coproc MKFDS { "$TS_HELPER_MKFDS" timerfd $FD clockid=realtime remaining=0 interval=10 interval-nanofrac=000050000; } if read -u ${MKFDS[0]} PID; then PID_1=$((PID -1)) EXPR="(PID > ${PID_1}.9) and (PID < ${PID}.1) and (ASSOC == 'exe')" PID_0=$(${TS_CMD_LSFD} -n -r -o PID -Q "$EXPR") echo "pid in a range:" $? if [[ "${PID_0}" == "${PID}" ]]; then echo "coparing pids": $? else echo "coparing pids": $? "PID_0:${PID_0} == PID:${PID}" fi EXPR='(TIMERFD.INTERVAL < 10.000051) and (TIMERFD.INTERVAL > 10)' ${TS_CMD_LSFD} -n -r -o FD,TIMERFD.INTERVAL -p "$PID" -Q "$EXPR" echo "FD,TIMERFD.INTERVAL: $EXPR": $? EXPR='(TIMERFD.INTERVAL <= 10) and (TIMERFD.INTERVAL > 9.99)' ${TS_CMD_LSFD} -n -r -o FD,TIMERFD.INTERVAL -p "$PID" -Q "$EXPR" echo "FD,TIMERFD.INTERVAL: $EXPR": $? EXPR='(TIMERFD.INTERVAL >= 10)' ${TS_CMD_LSFD} -n -r -o FD,TIMERFD.INTERVAL -p "$PID" -Q "$EXPR" echo "FD,TIMERFD.INTERVAL: $EXPR": $? EXPR='(TIMERFD.INTERVAL >= 10.0)' ${TS_CMD_LSFD} -n -r -o FD,TIMERFD.INTERVAL -p "$PID" -Q "$EXPR" echo "FD,TIMERFD.INTERVAL: $EXPR": $? EXPR='(TIMERFD.INTERVAL < 10) and (0 < TIMERFD.INTERVAL)' ${TS_CMD_LSFD} -n -r -o FD,TIMERFD.INTERVAL -p "$PID" -Q "$EXPR" echo "FD,TIMERFD.INTERVAL: $EXPR": $? EXPR='(TIMERFD.INTERVAL < 10) and (0.0 < TIMERFD.INTERVAL)' ${TS_CMD_LSFD} -n -r -o FD,TIMERFD.INTERVAL -p "$PID" -Q "$EXPR" echo "FD,TIMERFD.INTERVAL: $EXPR": $? EXPR='(TIMERFD.INTERVAL > 11)' ${TS_CMD_LSFD} -n -r -o FD,TIMERFD.INTERVAL -p "$PID" -Q "$EXPR" echo "FD,TIMERFD.INTERVAL: $EXPR": $? EXPR='(TIMERFD.INTERVAL == 10.00005)' ${TS_CMD_LSFD} -n -r -o FD,TIMERFD.INTERVAL -p "$PID" -Q "$EXPR" echo "FD,TIMERFD.INTERVAL: $EXPR": $? EXPR='(TIMERFD.INTERVAL == 10.000051)' ${TS_CMD_LSFD} -n -r -o FD,TIMERFD.INTERVAL -p "$PID" -Q "$EXPR" echo "FD,TIMERFD.INTERVAL: $EXPR": $? echo DONE >&"${MKFDS[1]}" fi wait "${MKFDS_PID}" } > "$TS_OUTPUT" 2>&1 ts_finalize