X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=ltt-sessiond%2Ftrace-kernel.c;h=fa3ba692c828669e3d1edfa37a9645074602437a;hp=3b51e3175da5fcde34a648e79555eabb22aed089;hb=48842b309b2000205367409c0f29ca40ec3e251c;hpb=62499ad6813a67ea23ef39bcfbbf21c40136442a diff --git a/ltt-sessiond/trace-kernel.c b/ltt-sessiond/trace-kernel.c index 3b51e3175..fa3ba692c 100644 --- a/ltt-sessiond/trace-kernel.c +++ b/ltt-sessiond/trace-kernel.c @@ -39,6 +39,8 @@ struct ltt_kernel_channel *trace_kernel_get_channel_by_name( goto error; } + DBG("Trying to find channel %s", name); + cds_list_for_each_entry(chan, &session->channel_list.head, list) { if (strcmp(name, chan->channel->name) == 0) { DBG("Found channel by name %s", name); @@ -80,8 +82,9 @@ error: * * Return pointer to structure or NULL. */ -struct ltt_kernel_session *trace_kernel_create_session(void) +struct ltt_kernel_session *trace_kernel_create_session(char *path) { + int ret; struct ltt_kernel_session *lks; /* Allocate a new ltt kernel session */ @@ -100,6 +103,13 @@ struct ltt_kernel_session *trace_kernel_create_session(void) lks->consumer_fd = 0; CDS_INIT_LIST_HEAD(&lks->channel_list.head); + /* Set session path */ + ret = asprintf(&lks->trace_path, "%s/kernel", path); + if (ret < 0) { + perror("asprintf kernel traces path"); + goto error; + } + return lks; error: @@ -194,6 +204,12 @@ struct ltt_kernel_event *trace_kernel_create_event(struct lttng_event *ev) case LTTNG_EVENT_TRACEPOINT: attr->instrumentation = LTTNG_KERNEL_TRACEPOINT; break; + case LTTNG_EVENT_SYSCALL: + attr->instrumentation = LTTNG_KERNEL_SYSCALL; + break; + case LTTNG_EVENT_ALL: + attr->instrumentation = LTTNG_KERNEL_ALL; + break; default: ERR("Unknown kernel instrumentation type (%d)", ev->type); goto error; @@ -292,10 +308,10 @@ void trace_kernel_destroy_stream(struct ltt_kernel_stream *stream) DBG("[trace] Closing stream fd %d", stream->fd); /* Close kernel fd */ close(stream->fd); - free(stream->pathname); - /* Remove from stream list */ cds_list_del(&stream->list); + + free(stream->pathname); free(stream); } @@ -307,11 +323,12 @@ void trace_kernel_destroy_event(struct ltt_kernel_event *event) DBG("[trace] Closing event fd %d", event->fd); /* Close kernel fd */ close(event->fd); - /* Free attributes */ - free(event->event); /* Remove from event list */ cds_list_del(&event->list); + + free(event->event); + free(event->ctx); free(event); } @@ -326,9 +343,6 @@ void trace_kernel_destroy_channel(struct ltt_kernel_channel *channel) DBG("[trace] Closing channel fd %d", channel->fd); /* Close kernel fd */ close(channel->fd); - free(channel->pathname); - /* Free attributes structure */ - free(channel->channel); /* For each stream in the channel list */ cds_list_for_each_entry_safe(stream, stmp, &channel->stream_list.head, list) { @@ -342,6 +356,10 @@ void trace_kernel_destroy_channel(struct ltt_kernel_channel *channel) /* Remove from channel list */ cds_list_del(&channel->list); + + free(channel->pathname); + free(channel->channel); + free(channel->ctx); free(channel); } @@ -353,9 +371,9 @@ void trace_kernel_destroy_metadata(struct ltt_kernel_metadata *metadata) DBG("[trace] Closing metadata fd %d", metadata->fd); /* Close kernel fd */ close(metadata->fd); - /* Free attributes */ - free(metadata->conf); + free(metadata->conf); + free(metadata->pathname); free(metadata); } @@ -369,6 +387,7 @@ void trace_kernel_destroy_session(struct ltt_kernel_session *session) DBG("[trace] Closing session fd %d", session->fd); /* Close kernel fds */ close(session->fd); + if (session->metadata_stream_fd != 0) { DBG("[trace] Closing metadata stream fd %d", session->metadata_stream_fd); close(session->metadata_stream_fd); @@ -382,5 +401,6 @@ void trace_kernel_destroy_session(struct ltt_kernel_session *session) trace_kernel_destroy_channel(channel); } + free(session->trace_path); free(session); }