From 7ec4d8760dd98e647977fae76749609a81bdf6d2 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 20 Oct 2017 14:50:14 +0200 Subject: dhcpcd: Honour file descriptor maximum --- dhcpcd/compat/pselect.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/dhcpcd/compat/pselect.c b/dhcpcd/compat/pselect.c index a18e5b3e..0e504e69 100644 --- a/dhcpcd/compat/pselect.c +++ b/dhcpcd/compat/pselect.c @@ -35,18 +35,32 @@ #include #include "pollts.h" +#ifdef __rtems__ +#include +#include +#endif /* __rtems__ */ int pollts(struct pollfd *restrict fds, nfds_t nfds, const struct timespec *restrict ts, const sigset_t *restrict sigmask) { +#ifndef __rtems__ fd_set read_fds; +#else /* __rtems__ */ + fd_set big_enough_read_fs[howmany(rtems_libio_number_iops, + sizeof(fd_set) * 8)]; +#define read_fds (*(fd_set *)(&big_enough_read_fs[0])) +#endif /* __rtems__ */ nfds_t n; int maxfd, r; struct timeval tv; struct timeval *tvp; +#ifndef __rtems__ FD_ZERO(&read_fds); +#else /* __rtems__ */ + memset(big_enough_read_fs, 0, sizeof(big_enough_read_fs)); +#endif /* __rtems__ */ maxfd = 0; for (n = 0; n < nfds; n++) { if (fds[n].events & POLLIN) { -- cgit v1.2.3