diff options
author | Lennart Poettering <lennart@poettering.net> | 2020-06-10 11:43:40 +0200 |
---|---|---|
committer | Daan De Meyer <daan.j.demeyer@gmail.com> | 2020-06-10 20:06:10 +0200 |
commit | 0f2d351f790516bc3f1158d964c5f83f339addb2 (patch) | |
tree | f9df08ab66c5c7be26c92e1767d39835cc9f472c /src/userdb | |
parent | 24bd74ae03efc98272236bd0a98a1d7d090d540c (diff) | |
download | systemd-0f2d351f790516bc3f1158d964c5f83f339addb2.tar.gz |
tree-wide: port to fd_wait_for_event()
Prompted by the discussion on #16110, let's migrate more code to
fd_wait_for_event().
This only leaves 7 places where we call into poll()/poll() directly in
our entire codebase. (one of which is fd_wait_for_event() itself)
Diffstat (limited to 'src/userdb')
-rw-r--r-- | src/userdb/userwork.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/src/userdb/userwork.c b/src/userdb/userwork.c index 4a8c98384d..732063f6c7 100644 --- a/src/userdb/userwork.c +++ b/src/userdb/userwork.c @@ -9,6 +9,7 @@ #include "fd-util.h" #include "group-record-nss.h" #include "group-record.h" +#include "io-util.h" #include "main-func.h" #include "process-util.h" #include "strv.h" @@ -747,20 +748,14 @@ static int run(int argc, char *argv[]) { return log_error_errno(fd, "Failed to accept() from listening socket: %m"); if (now(CLOCK_MONOTONIC) <= usec_add(n, PRESSURE_SLEEP_TIME_USEC)) { - struct pollfd pfd = { - .fd = listen_fd, - .events = POLLIN, - }; - /* We only slept a very short time? If so, let's see if there are more sockets * pending, and if so, let's ask our parent for more workers */ - if (poll(&pfd, 1, 0) < 0) - return log_error_errno(errno, "Failed to test for POLLIN on listening socket: %m"); - if (FLAGS_SET(pfd.revents, POLLNVAL)) - return log_error_errno(SYNTHETIC_ERRNO(EBADF), "Listening socket dead?"); + r = fd_wait_for_event(listen_fd, POLLIN, 0); + if (r < 0) + return log_error_errno(r, "Failed to test for POLLIN on listening socket: %m"); - if (FLAGS_SET(pfd.revents, POLLIN)) { + if (FLAGS_SET(r, POLLIN)) { pid_t parent; parent = getppid(); |