#include "fileio.h"
#include "fs-util.h"
#include "hostname-util.h"
+#include "io-util.h"
#include "locale-util.h"
#include "log.h"
#include "macro.h"
};
DEFINE_STRING_TABLE_LOOKUP_WITH_FALLBACK(sched_policy, int, INT_MAX);
+
+_noreturn_ void report_errno_and_exit(int errno_fd, int error) {
+ int r;
+
+ if (error >= 0)
+ _exit(EXIT_SUCCESS);
+
+ assert(errno_fd >= 0);
+
+ r = loop_write(errno_fd, &error, sizeof(error));
+ if (r < 0)
+ log_debug_errno(r, "Failed to write errno to errno_fd=%d: %m", errno_fd);
+
+ _exit(EXIT_FAILURE);
+}
int proc_dir_open(DIR **ret);
int proc_dir_read(DIR *d, pid_t *ret);
int proc_dir_read_pidref(DIR *d, PidRef *ret);
+
+_noreturn_ void report_errno_and_exit(int errno_fd, int error);
return mfree(o);
}
-
-_noreturn_ void report_errno_and_exit(int errno_fd, int r) {
- if (r >= 0)
- _exit(EXIT_SUCCESS);
-
- assert(errno_fd >= 0);
-
- ssize_t n = write(errno_fd, &r, sizeof(r));
- if (n < 0)
- log_debug_errno(errno, "Failed to write operation's errno: %m");
- if (n != sizeof(r))
- log_debug_errno(SYNTHETIC_ERRNO(EIO), "Sent unexpectedly short message");
-
- _exit(EXIT_FAILURE);
-}
static inline int operation_new_with_varlink_reply(Manager *manager, Machine *machine, pid_t child, sd_varlink *link, int errno_fd, Operation **ret) {
return operation_new(manager, machine, child, /* message = */ NULL, link, errno_fd, ret);
}
-
-void report_errno_and_exit(int errno_fd, int r);