# This only affects some "external" buffers not populated by libdlog, currently only kmsg.
handle_kmsg=1
+# epoll delay, meaning how often the daemon wakes up to do bookkeeping
+# and flush passive logging files when no new logs are incoming.
+# Higher values mean lower CPU usage, but can also mean some log delay
+# for continuous dlogutil instances.
+epoll_time_ms=1000
+
# Syslog handling currently disabled in the daemon - not needed in Tizen.
#dlog_logger_conf_syslog=dlogutil -b syslog -r 256 -n 1 -f /var/log/dlog/syslog -v recv_realtime
.reader_init = NULL
};
+static const int DEFAULT_EPOLL_TIME_MS = 1000;
+
/**
* @brief Parse permissions
* @details Parse a string representation of permissions to the internal integral one
l->epollfd = epoll_create1(0);
if (l->epollfd == -1)
return -errno;
+ l->epolltime = data->epoll_time;
l->buf_params = data->buf_params;
int r = initialize_epoll_size(&events, &events_size);
if (r < 0)
return r;
+
while (g_logger_run) {
clock_gettime(CLOCK_MONOTONIC, &server->now);
ensure_epoll_size(&events, &events_size, server->epollcnt);
- int nfds = epoll_wait(server->epollfd, events, events_size, 1000);
+ int nfds = epoll_wait(server->epollfd, events, events_size, server->epolltime);
if (nfds < 0 && errno == EINTR) // TODO: This is *almost* TEMP_FAILURE_RETRY. Is it equivalent?
continue;
g_backend.logger_device_throttling[i] = max_int(1, log_config_get_int(&conf, key, throttling_default));
}
+ data->epoll_time = log_config_get_int(&conf, "epoll_time_ms", DEFAULT_EPOLL_TIME_MS);
+
memset(data->is_buffer_enabled, 0, sizeof(data->is_buffer_enabled));
if (!strcmp(backend, "pipe")) {
data->is_buffer_enabled[LOG_ID_MAIN] =
struct logger {
int epollfd;
unsigned epollcnt;
+ int epolltime;
list_head writers;
list_head extra_readers;
struct log_buffer* buffers[LOG_ID_MAX];
struct logger_config_data {
struct buf_params buf_params;
list_head logfile_configs;
+ int epoll_time;
int is_buffer_enabled[LOG_ID_MAX];
struct buffer_config_data buffers[LOG_ID_MAX];
};