X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Ftrace-kernel.c;h=22c602ceec7f714ef83666c45b82169b927e7698;hb=4e6581a7740c292be662d108a21a80e478b42a71;hp=b9d03a72e002ca0042764a877f0ae556e87f1faa;hpb=87597c2c3bbaa1502ad2025cbf16704829f3b464;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/trace-kernel.c b/src/bin/lttng-sessiond/trace-kernel.c index b9d03a72e..22c602cee 100644 --- a/src/bin/lttng-sessiond/trace-kernel.c +++ b/src/bin/lttng-sessiond/trace-kernel.c @@ -28,6 +28,7 @@ #include #include +#include #include "consumer.h" #include "trace-kernel.h" @@ -38,7 +39,7 @@ * Find the channel name for the given kernel session. */ struct ltt_kernel_channel *trace_kernel_get_channel_by_name( - char *name, struct ltt_kernel_session *session) + const char *name, struct ltt_kernel_session *session) { struct ltt_kernel_channel *chan; @@ -163,6 +164,30 @@ struct ltt_kernel_session *trace_kernel_create_session(void) lks->metadata = NULL; CDS_INIT_LIST_HEAD(&lks->channel_list.head); + lks->tracker_list_pid = lttng_tracker_list_create(); + if (!lks->tracker_list_pid) { + goto error; + } + lks->tracker_list_vpid = lttng_tracker_list_create(); + if (!lks->tracker_list_vpid) { + goto error; + } + lks->tracker_list_uid = lttng_tracker_list_create(); + if (!lks->tracker_list_uid) { + goto error; + } + lks->tracker_list_vuid = lttng_tracker_list_create(); + if (!lks->tracker_list_vuid) { + goto error; + } + lks->tracker_list_gid = lttng_tracker_list_create(); + if (!lks->tracker_list_gid) { + goto error; + } + lks->tracker_list_vgid = lttng_tracker_list_create(); + if (!lks->tracker_list_vgid) { + goto error; + } lks->consumer = consumer_create_output(CONSUMER_DST_LOCAL); if (lks->consumer == NULL) { goto error; @@ -171,6 +196,12 @@ struct ltt_kernel_session *trace_kernel_create_session(void) return lks; error: + lttng_tracker_list_destroy(lks->tracker_list_pid); + lttng_tracker_list_destroy(lks->tracker_list_vpid); + lttng_tracker_list_destroy(lks->tracker_list_uid); + lttng_tracker_list_destroy(lks->tracker_list_vuid); + lttng_tracker_list_destroy(lks->tracker_list_gid); + lttng_tracker_list_destroy(lks->tracker_list_vgid); free(lks); alloc_error: @@ -709,9 +740,20 @@ void trace_kernel_destroy_session(struct ltt_kernel_session *session) cds_list_for_each_entry_safe(channel, ctmp, &session->channel_list.head, list) { trace_kernel_destroy_channel(channel); } +} +/* Free elements needed by destroy notifiers. */ +void trace_kernel_free_session(struct ltt_kernel_session *session) +{ /* Wipe consumer output object */ consumer_output_put(session->consumer); + lttng_tracker_list_destroy(session->tracker_list_pid); + lttng_tracker_list_destroy(session->tracker_list_vpid); + lttng_tracker_list_destroy(session->tracker_list_uid); + lttng_tracker_list_destroy(session->tracker_list_vuid); + lttng_tracker_list_destroy(session->tracker_list_gid); + lttng_tracker_list_destroy(session->tracker_list_vgid); + free(session); }