summaryrefslogtreecommitdiff
path: root/udev
diff options
context:
space:
mode:
authorKay Sievers <kay.sievers@vrfy.org>2009-01-21 11:09:27 +0100
committerKay Sievers <kay.sievers@vrfy.org>2009-01-21 11:09:27 +0100
commite9a77fd828e9d415e4d64dd74aa780a61f726536 (patch)
tree473438eb570c3f39ac78951f20a39a7582ac05e5 /udev
parent3210a72ba314dd15e6f7ed85ee22d7a5a0944b7a (diff)
open-code pollfd setup
Diffstat (limited to 'udev')
-rw-r--r--udev/udevd.c28
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;