From 9adc7621d1387e891a9fe61c3fc7d9b1477ea92b Mon Sep 17 00:00:00 2001 From: Michal Bloch Date: Fri, 10 Feb 2023 19:17:01 +0100 Subject: [PATCH] dlog_logger: move epoll metadata functions to fd_entity.c This is where they belong. Add doxygen documentation (mostly pro forma). Change-Id: Ibbf2cab10f3d3bc2cebd6d20d592d809474af738 Signed-off-by: Michal Bloch --- src/logger/fd_entity.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/logger/fd_entity.h | 3 +++ src/logger/logger.c | 43 ------------------------------------------- 3 files changed, 53 insertions(+), 43 deletions(-) diff --git a/src/logger/fd_entity.c b/src/logger/fd_entity.c index 408982a..568035e 100644 --- a/src/logger/fd_entity.c +++ b/src/logger/fd_entity.c @@ -3,6 +3,7 @@ #include #include #include +#include /** * @brief Add given FD entity to logger event notification @@ -52,6 +53,55 @@ int modify_fd_entity(const struct epoll_metadata *metadata, struct fd_entity *fd return 0; } +static int initialize_epoll_size(struct epoll_event **events, unsigned *size) +{ + assert(events); + assert(size); + + static const size_t default_size = 16U; + typeof(*events) ev = malloc(default_size * sizeof *ev); + if (!ev) + return -ENOMEM; + + *events = ev; + *size = default_size; + return 0; +} + +/** + * @brief Initialize an epoll metadata structure + * @param [out] metadata The structure to initialize + * @return 0 on success, else -errno + */ +int epoll_metadata_initialize(struct epoll_metadata *metadata) +{ + metadata->fd = epoll_create1(0); + if (metadata->fd < 0) + return -errno; + + int r = initialize_epoll_size(&metadata->events, &metadata->events_size); + if (r < 0) { + close(metadata->fd); + metadata->fd = -1; + return r; + } + + metadata->cnt = 0; + return 0; +} + +/** + * @brief Destroy an epoll metadata structure + * @param [in] metadata The structure to destroy + */ +void epoll_metadata_destroy(struct epoll_metadata *metadata) +{ + if (metadata->fd >= 0) + close(metadata->fd); + + free(metadata->events); +} + /** * @brief Remove given FD entity from logger event notification * @details Uses epoll mechanism for notification of events diff --git a/src/logger/fd_entity.h b/src/logger/fd_entity.h index 4ee7574..7a14d4b 100644 --- a/src/logger/fd_entity.h +++ b/src/logger/fd_entity.h @@ -40,3 +40,6 @@ int remove_fd_entity(struct epoll_metadata *metadata, struct fd_entity *fd_entit void init_fd_entity(struct fd_entity *fd_entity, dispatch_event_t dispatch_event, void *user_data); void set_read_fd_entity(struct fd_entity *fd_entity, int fd); void set_write_fd_entity(struct fd_entity *fd_entity, int fd); + +int epoll_metadata_initialize(struct epoll_metadata *metadata); +void epoll_metadata_destroy(struct epoll_metadata *metadata); diff --git a/src/logger/logger.c b/src/logger/logger.c index 0c1801a..c7d12e5 100644 --- a/src/logger/logger.c +++ b/src/logger/logger.c @@ -38,9 +38,6 @@ * @{ */ -// function prototypes -static int initialize_epoll_size(struct epoll_event **events, unsigned *size); - /** global state when logger is not interrupted by any handled signals */ static volatile sig_atomic_t g_logger_run = 1; @@ -604,31 +601,6 @@ void logger_add_writer(struct logger *l, struct writer *wr) add_fd_entity(&l->epoll_common, &wr->fd_entity); } -int epoll_metadata_initialize(struct epoll_metadata *metadata) -{ - metadata->fd = epoll_create1(0); - if (metadata->fd < 0) - return -errno; - - int r = initialize_epoll_size(&metadata->events, &metadata->events_size); - if (r < 0) { - close(metadata->fd); - metadata->fd = -1; - return r; - } - - metadata->cnt = 0; - return 0; -} - -void epoll_metadata_destroy(struct epoll_metadata *metadata) -{ - if (metadata->fd >= 0) - close(metadata->fd); - - free(metadata->events); -} - /** * @brief Create the logger server * @details Allocate the logger server's auxiliary structures (buffers etc.) @@ -793,21 +765,6 @@ static void ensure_epoll_size(struct epoll_event **events, unsigned *size, unsig *size = wanted_size; } -static int initialize_epoll_size(struct epoll_event **events, unsigned *size) -{ - assert(events); - assert(size); - - static const size_t default_size = 16U; - typeof(*events) ev = malloc(default_size * sizeof *ev); - if (!ev) - return -ENOMEM; - - *events = ev; - *size = default_size; - return 0; -} - void dispatch_epoll_event(struct logger *server, struct epoll_event *event) { struct fd_entity *const entity = (struct fd_entity *) event->data.ptr; -- 2.7.4