dlog_logger: commonize reader threading facilities
[platform/core/system/dlog.git] / src / logger / reader_logger.c
index e58845d..e390edd 100644 (file)
@@ -7,6 +7,8 @@
 #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;
@@ -16,11 +18,6 @@ static void free_reader_logger(struct reader_common *_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)
@@ -108,8 +105,8 @@ static struct reader_logger *reader_logger_alloc(struct logger *server)
        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;
 
@@ -158,7 +155,7 @@ static void service_and_maybe_flush(struct reader_logger *const reader)
        (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;
 
@@ -191,14 +188,3 @@ static void *reader_thread(void *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;
-}
-