diff options
author | Kay Sievers <kay.sievers@vrfy.org> | 2009-01-21 11:09:27 +0100 |
---|---|---|
committer | Kay Sievers <kay.sievers@vrfy.org> | 2009-01-21 11:09:27 +0100 |
commit | e9a77fd828e9d415e4d64dd74aa780a61f726536 (patch) | |
tree | 473438eb570c3f39ac78951f20a39a7582ac05e5 /udev/udevd.c | |
parent | 3210a72ba314dd15e6f7ed85ee22d7a5a0944b7a (diff) |
open-code pollfd setup
Diffstat (limited to 'udev/udevd.c')
-rw-r--r-- | udev/udevd.c | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/udev/udevd.c b/udev/udevd.c index bc6484b1b0..d227a71fd1 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; |