From e9a77fd828e9d415e4d64dd74aa780a61f726536 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 21 Jan 2009 11:09:27 +0100 Subject: [PATCH 1/1] open-code pollfd setup --- udev/udevd.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/udev/udevd.c b/udev/udevd.c index bc6484b1b..d227a71fd 100644 --- a/udev/udevd.c +++ b/udev/udevd.c @@ -853,9 +853,10 @@ int main(int argc, char *argv[]) while (!udev_exit) { sigset_t blocked_mask, orig_mask; + struct pollfd pfd[4]; struct pollfd *ctrl_poll, *monitor_poll, *inotify_poll = NULL; - struct pollfd pfd[10]; - int fdcount, nfds = 0; + int nfds = 0; + int fdcount; sigfillset(&blocked_mask); sigprocmask(SIG_SETMASK, &blocked_mask, &orig_mask); @@ -864,19 +865,22 @@ int main(int argc, char *argv[]) goto handle_signals; } -#define POLL_FOR(__desc, __pollptr) do { \ - pfd[nfds].fd = (__desc); pfd[nfds].events = POLLIN; \ - __pollptr = &pfd[nfds++]; \ -} while (0) - POLL_FOR(udev_ctrl_get_fd(udev_ctrl), ctrl_poll); - POLL_FOR(udev_monitor_get_fd(kernel_monitor), monitor_poll); - if (inotify_fd >= 0) - POLL_FOR(inotify_fd, inotify_poll); -#undef POLL_FOR + ctrl_poll = &pfd[nfds++]; + ctrl_poll->fd = udev_ctrl_get_fd(udev_ctrl); + ctrl_poll->events = POLLIN; + + monitor_poll = &pfd[nfds++]; + monitor_poll->fd = udev_monitor_get_fd(kernel_monitor); + monitor_poll->events = POLLIN; + + if (inotify_fd >= 0) { + inotify_poll = &pfd[nfds++]; + inotify_poll->fd = inotify_fd; + inotify_poll->events = POLLIN; + } fdcount = ppoll(pfd, nfds, NULL, &orig_mask); sigprocmask(SIG_SETMASK, &orig_mask, NULL); - if (fdcount < 0) { if (errno == EINTR) goto handle_signals; -- 2.30.2