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;
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;
}
+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) {
goto end;
}
- ret = save_kernel_context(writer, kchan->ctx);
+ ret = save_kernel_contexts(writer, kchan);
if (ret) {
goto end;
}
goto end;
}
} else {
- ret = config_writer_write_element_signed_int(writer,
+ ret = config_writer_write_element_unsigned_int(writer,
config_element_live_timer_interval, session->live_timer);
if (ret) {
ret = LTTNG_ERR_SAVE_IO_FAIL;