Unify starting a reader 00/296200/3
authorMichal Bloch <m.bloch@samsung.com>
Tue, 18 Jul 2023 14:11:02 +0000 (16:11 +0200)
committerMichal Bloch <m.bloch@samsung.com>
Wed, 13 Sep 2023 17:44:18 +0000 (19:44 +0200)
The same function now either adds the reader to server
or, if so defined, runs a standalone thread.

Change-Id: I4c546d8e3479b7498c9ed2def85b7f710672b001

src/logger/log_buffer.c
src/logger/reader_common.c

index 9ebc7fe..8df1d1e 100644 (file)
@@ -260,6 +260,12 @@ static int distribute_pipes(struct logger *server, struct reader_common *reader,
        if (rs)
                return false;
 
+       const int rr = reader_run(reader);
+       if (rr == 0)
+               return true;
+       if (rr != -ENOENT)
+               return false;
+
        const int ra = add_reader_to_server(reader, server);
        if (ra < 0)
                return false;
index 3d39148..a654476 100644 (file)
@@ -123,6 +123,9 @@ reader_free:
 
 int reader_run(struct reader_common *const reader)
 {
+       if (!reader->ops->thread_func)
+               return -ENOENT;
+
        pthread_t thread;
        int r = pthread_create(&thread, NULL, reader->ops->thread_func, reader);
        if (r < 0)