Commit 01db7fbf authored by Shuah Khan's avatar Shuah Khan

selftests: timers: set-timer-lat: fix hang when std out/err are redirected

do_timer_oneshot() uses select() as a timer with FD_SETSIZE and readfs
is cleared with FD_ZERO without FD_SET.

When stdout and stderr are redirected, the test hangs in select forever.
Fix the problem calling select() with readfds empty and nfds zero. This
is sufficient for using select() for timer.

With this fix "./set-timer-lat > /dev/null 2>&1" no longer hangs.
Signed-off-by: default avatarShuah Khan <shuahkh@osg.samsung.com>
Acked-by: default avatarGreg Hackmann <ghackmann@google.com>
Signed-off-by: default avatarShuah Khan <shuahkh@osg.samsung.com>
parent 21aadfa2
......@@ -228,7 +228,6 @@ int do_timer_oneshot(int clock_id, int flags)
timer_t tm1;
const int interval = 0;
struct timeval timeout;
fd_set fds;
int err;
err = setup_timer(clock_id, flags, interval, &tm1);
......@@ -237,9 +236,8 @@ int do_timer_oneshot(int clock_id, int flags)
memset(&timeout, 0, sizeof(timeout));
timeout.tv_sec = 5;
FD_ZERO(&fds);
do {
err = select(FD_SETSIZE, &fds, NULL, NULL, &timeout);
err = select(0, NULL, NULL, NULL, &timeout);
} while (err == -1 && errno == EINTR);
timer_delete(tm1);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment