assert(session);
assert(name);
+ /*
+ * If we receive an empty string for channel name, it means the
+ * default channel name is requested.
+ */
+ if (name[0] == '\0')
+ name = DEFAULT_CHANNEL_NAME;
+
DBG("Trying to find channel %s", name);
cds_list_for_each_entry(chan, &session->channel_list.head, list) {
*
* Return pointer to structure or NULL.
*/
-struct ltt_kernel_session *trace_kernel_create_session(char *path)
+struct ltt_kernel_session *trace_kernel_create_session(void)
{
struct ltt_kernel_session *lks = NULL;
*/
lks->tmp_consumer = NULL;
- if (*path != '\0') {
- int ret;
-
- /* Use the default consumer output which is the tracing session path. */
- ret = snprintf(lks->consumer->dst.trace_path, PATH_MAX,
- "%s" DEFAULT_KERNEL_TRACE_DIR, path);
- if (ret < 0) {
- PERROR("snprintf consumer trace path");
- goto error;
- }
-
- /* Set session path */
- ret = asprintf(&lks->trace_path, "%s" DEFAULT_KERNEL_TRACE_DIR, path);
- if (ret < 0) {
- PERROR("asprintf kernel traces path");
- goto error;
- }
- }
-
return lks;
error:
lkc->channel = zmalloc(sizeof(struct lttng_channel));
if (lkc->channel == NULL) {
PERROR("lttng_channel zmalloc");
+ free(lkc);
goto error;
}
memcpy(lkc->channel, chan, sizeof(struct lttng_channel));
+ /*
+ * If we receive an empty string for channel name, it means the
+ * default channel name is requested.
+ */
+ if (chan->name[0] == '\0') {
+ strncpy(lkc->channel->name, DEFAULT_CHANNEL_NAME,
+ sizeof(lkc->channel->name));
+ }
+ lkc->channel->name[LTTNG_KERNEL_SYM_NAME_LEN - 1] = '\0';
+
lkc->fd = -1;
lkc->stream_count = 0;
lkc->event_count = 0;
attr->instrumentation = LTTNG_KERNEL_KRETPROBE;
attr->u.kretprobe.addr = ev->attr.probe.addr;
attr->u.kretprobe.offset = ev->attr.probe.offset;
- attr->u.kretprobe.offset = ev->attr.probe.offset;
strncpy(attr->u.kretprobe.symbol_name,
ev->attr.probe.symbol_name, LTTNG_KERNEL_SYM_NAME_LEN);
attr->u.kretprobe.symbol_name[LTTNG_KERNEL_SYM_NAME_LEN - 1] = '\0';
/*
* Cleanup kernel session structure
+ *
+ * Should *NOT* be called with RCU read-side lock held.
*/
void trace_kernel_destroy_session(struct ltt_kernel_session *session)
{
consumer_destroy_output(session->consumer);
consumer_destroy_output(session->tmp_consumer);
- free(session->trace_path);
free(session);
}