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)
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);
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)
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);