From 6eee578317702afa0dea02e996af952af42ea273 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Fri, 21 Nov 2014 06:38:26 -0600 Subject: [PATCH] vfs/poll: add proper handling for sem_timedwait errnos. From Jussi Kivilinna --- fs/vfs/fs_poll.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/fs/vfs/fs_poll.c b/fs/vfs/fs_poll.c index 26f1ebd215b..a7fd5ed62eb 100644 --- a/fs/vfs/fs_poll.c +++ b/fs/vfs/fs_poll.c @@ -334,6 +334,22 @@ int poll(FAR struct pollfd *fds, nfds_t nfds, int timeout) } ret = sem_timedwait(&sem, &abstime); + if (ret < 0) + { + int err = get_errno(); + + if (err == ETIMEDOUT) + { + /* Return zero (OK) in the event of a timeout */ + + ret = OK; + } + else + { + ret = -err; + } + } + irqrestore(flags); } else