From a9604dff6798966331bc18d76e09bd1792b4b805 Mon Sep 17 00:00:00 2001 From: Mateusz Majewski Date: Thu, 1 Sep 2022 08:34:57 +0200 Subject: [PATCH] Add zero-copy backend support to log-redirect-stdout Change-Id: I7e54084e89a1f0dfe0b94fc497d71e50492cb3e9 --- src/log-redirect-stdout/internal.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/log-redirect-stdout/internal.c b/src/log-redirect-stdout/internal.c index 6c4cb66..f0b4bb3 100644 --- a/src/log-redirect-stdout/internal.c +++ b/src/log-redirect-stdout/internal.c @@ -27,6 +27,7 @@ #include #include #include +#include #include @@ -94,9 +95,30 @@ static int setup_single_android_logger(log_id_t buffer, const char *tag, log_pri return 0; } +static int apply_zero_copy_ioctl(int fd, const char *tag, log_priority prio) +{ + int r = ioctl(fd, ZLOGGER_IOCTL_COMMAND_SET_DEFAULT_PRIORITY, (uint32_t)prio); + if (r < 0) + return -errno; + + r = ioctl(fd, ZLOGGER_IOCTL_COMMAND_SET_DEFAULT_TAG, tag); + if (r < 0) + return -errno; + + return 0; +} + static int setup_single_zero_copy(log_id_t buffer, const char *tag, log_priority prio, struct log_config *config, int *fd) { - return -ENOTSUP; + *fd = open(ZERO_COPY_DEVICE_NAME, O_WRONLY); + if (*fd < 0) + return -errno; + + int r = apply_zero_copy_ioctl(*fd, tag, prio); + if (r < 0) + return r; + + return 0; } int setup_single_unstructed(log_id_t buffer, const char *tag, log_priority prio, int *fd) -- 2.7.4