libdlogutil: printing buffers get aliased 38/291738/3
authorMichal Bloch <m.bloch@samsung.com>
Thu, 20 Apr 2023 20:21:57 +0000 (22:21 +0200)
committerMichal Bloch <m.bloch@samsung.com>
Tue, 25 Apr 2023 16:17:24 +0000 (18:17 +0200)
Change-Id: I7b12fe7ab7cef14479cb09f6335eef54b6b131af
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
src/libdlogutil/lib.c
src/libdlogutil/logretrieve.c
src/libdlogutil/logretrieve.h

index 076c0e2..a0e304b 100644 (file)
@@ -215,7 +215,7 @@ EXPORT_API int dlogutil_config_connect(dlogutil_config_s *config, dlogutil_state
        log_id_t aliased[LOG_ID_MAX];
        for (int i = 0; i < LOG_ID_MAX; ++i)
                aliased[i] = LOG_ID_INVALID;
-       int fdi_cnt = create_initial_fdis(&fdi_ptrs, config->buffers, backend, config->mode == DLOGUTIL_MODE_COMPRESSED_MEMORY_DUMP, &conf, aliased);
+       int fdi_cnt = create_initial_fdis(&fdi_ptrs, config->buffers, config->mode, backend, config->mode == DLOGUTIL_MODE_COMPRESSED_MEMORY_DUMP, &conf, aliased);
        if (fdi_cnt < 0)
                return TIZEN_ERROR_IO_ERROR;
        if (fdi_cnt == 0)
index f19eaaf..c2dea88 100644 (file)
@@ -62,7 +62,22 @@ static size_t get_required_fdi_capacity(const struct fd_ops *ops_by_buffer[stati
        return ret;
 }
 
-int create_initial_fdis(struct fd_info ***fdis, int enabled_buffers, backend_t backend, bool is_compressed_memory, const struct log_config *conf, log_id_t aliased[LOG_ID_MAX])
+void alias_printing_pipes(const struct fd_ops *ops_by_buffer[static LOG_ID_MAX], log_id_t aliased[static LOG_ID_MAX])
+{
+       log_id_t first_pipe = 0;
+       while (first_pipe < LOG_ID_MAX && ops_by_buffer[first_pipe] != &ops_pipe)
+               ++ first_pipe;
+
+       for (log_id_t i = first_pipe + 1; i < LOG_ID_MAX; ++i) {
+               if (ops_by_buffer[i] != &ops_pipe)
+                       continue;
+
+               aliased[i] = first_pipe;
+               ops_by_buffer[i] = NULL;
+       }
+}
+
+int create_initial_fdis(struct fd_info ***fdis, int enabled_buffers, dlogutil_mode_e mode, backend_t backend, bool is_compressed_memory, const struct log_config *conf, log_id_t aliased[LOG_ID_MAX])
 {
        assert(fdis);
        assert(conf);
@@ -73,6 +88,9 @@ int create_initial_fdis(struct fd_info ***fdis, int enabled_buffers, backend_t b
        for (size_t i = 0; i < NELEMS(ops_by_buffer); ++i)
                ops_by_buffer[i] = get_ops_by_buffer(i, enabled_buffers, backend, is_compressed_memory);
 
+       if (mode != DLOGUTIL_MODE_NONPRINTING)
+               alias_printing_pipes(ops_by_buffer, aliased);
+
        int fdi_cnt = 0;
        __attribute__((cleanup(fdi_array_free))) struct fd_info **fdi_ptrs = calloc(get_required_fdi_capacity(ops_by_buffer), sizeof *fdi_ptrs);
        if (!fdi_ptrs)
index f4725de..eaff183 100644 (file)
@@ -47,6 +47,6 @@ typedef struct dlogutil_state {
        log_id_t aliased[LOG_ID_MAX];
 } dlogutil_state_s;
 
-int create_initial_fdis(struct fd_info ***fdis, int enabled_buffers, backend_t backend, bool is_compressed_memory, const struct log_config *conf, log_id_t aliased[LOG_ID_MAX]);
+int create_initial_fdis(struct fd_info ***fdis, int enabled_buffers, dlogutil_mode_e mode, backend_t backend, bool is_compressed_memory, const struct log_config *conf, log_id_t aliased[LOG_ID_MAX]);
 int dlogutil_state_init(dlogutil_state_s *state, struct fd_info ***data_fds_ptr, int fd_count, dlogutil_config_s *config, bool sorting_needed, dlogutil_sorting_order_e real_sort_by, const struct log_config *conf, log_id_t aliased[LOG_ID_MAX]);
 int do_print_once(dlogutil_state_s *state, int timeout, dlogutil_entry_s **out);