#include <assert.h>
#include <poll.h>
+static void *reader_logger_thread(void *userdata);
+
static void free_reader_logger(struct reader_common *_reader)
{
struct reader_logger *const reader = (struct reader_logger *) _reader;
if (reader->device_fd != -1)
close(reader->device_fd);
-
- /* We don't do `pthread_cancel(reader->thread);`, the thread should
- * end on its own (there's some external cleanup involved anyway).
- * At the moment the thread assumes the reader is permanent and only
- * closes when the whole program does, which is approximately true. */
}
static void handle_single_log(struct reader_logger *reader, struct now_t time, int read_count)
reader_common_init(&ret->common, server);
ret->device_fd = -1;
- ret->thread = 0;
ret->buf_id = LOG_ID_INVALID;
+ ret->common.thread_func = reader_logger_thread;
ret->common.service_reader = service_reader_logger;
ret->common.free_reader = free_reader_logger;
(void) reader_flush(&reader->common, now.mono, reader->common.server->buf_params.time);
}
-static void *reader_thread(void *userdata)
+static void *reader_logger_thread(void *userdata)
{
struct reader_logger *reader = (struct reader_logger *) userdata;
return NULL;
}
-int reader_logger_run(struct reader_logger *reader)
-{
- pthread_t thread;
- int r = pthread_create(&thread, NULL, reader_thread, reader);
- if (r < 0)
- return r;
-
- reader->thread = thread;
- return 0;
-}
-