X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fsave.c;h=684c4edbf9c80d5dd3089dde71c6b130772efad8;hp=89b45ba832e1a047429dfa905b4b071e0bd66c66;hb=645328ae989e5f50a3a49c1ac34b2fee287a3d7b;hpb=8382cf6f76c29b0451b7fe986c6b882d6029ca47 diff --git a/src/bin/lttng-sessiond/save.c b/src/bin/lttng-sessiond/save.c index 89b45ba83..684c4edbf 100644 --- a/src/bin/lttng-sessiond/save.c +++ b/src/bin/lttng-sessiond/save.c @@ -258,8 +258,12 @@ const char *get_ust_context_type_string( case LTTNG_UST_CONTEXT_PTHREAD_ID: context_type_string = config_event_context_pthread_id; break; + case LTTNG_UST_CONTEXT_PERF_THREAD_COUNTER: + context_type_string = config_event_context_perf_thread_counter; + break; default: context_type_string = NULL; + break; } return context_type_string; @@ -666,19 +670,13 @@ int save_kernel_context(struct config_writer *writer, goto end; } - ret = config_writer_open_element(writer, config_element_contexts); - if (ret) { - ret = LTTNG_ERR_SAVE_IO_FAIL; - goto end; - } - ret = config_writer_open_element(writer, config_element_context); if (ret) { ret = LTTNG_ERR_SAVE_IO_FAIL; goto end; } - if (ctx->ctx == LTTNG_KERNEL_CONTEXT_PERF_COUNTER) { + if (ctx->ctx == LTTNG_KERNEL_CONTEXT_PERF_CPU_COUNTER) { ret = config_writer_open_element(writer, config_element_perf); if (ret) { ret = LTTNG_ERR_SAVE_IO_FAIL; @@ -737,6 +735,30 @@ int save_kernel_context(struct config_writer *writer, goto end; } +end: + return ret; +} + +static +int save_kernel_contexts(struct config_writer *writer, + struct ltt_kernel_channel *kchan) +{ + int ret; + struct ltt_kernel_context *ctx; + + ret = config_writer_open_element(writer, config_element_contexts); + if (ret) { + ret = LTTNG_ERR_SAVE_IO_FAIL; + goto end; + } + + cds_list_for_each_entry(ctx, &kchan->ctx_list, list) { + ret = save_kernel_context(writer, &ctx->ctx); + if (ret) { + goto end; + } + } + /* /contexts */ ret = config_writer_close_element(writer); if (ret) { @@ -844,7 +866,7 @@ int save_kernel_channel(struct config_writer *writer, goto end; } - ret = save_kernel_context(writer, kchan->ctx); + ret = save_kernel_contexts(writer, kchan); if (ret) { goto end; }