OPT_TYPE,
};
+static struct lttng_handle *handle;
+
/*
* Taken from the LTTng ABI
*/
/*
* Add context to channel or event.
*/
-static int add_context(void)
+static int add_context(char *session_name)
{
int ret = CMD_SUCCESS;
struct lttng_event_context context;
struct ctx_type *type;
char *ptr;
+ if (opt_kernel) {
+ dom.type = LTTNG_DOMAIN_KERNEL;
+ }
+
+ handle = lttng_create_handle(session_name, &dom);
+ if (handle == NULL) {
+ ret = -1;
+ goto error;
+ }
+
/* Iterate over all context type given */
cds_list_for_each_entry(type, &ctx_type_list.head, list) {
- /* Set session name for the current command */
- if (set_session_name(opt_session_name) < 0) {
- ret = CMD_ERROR;
- goto error;
- }
context.ctx = type->opt->ctx_type;
if (context.ctx == LTTNG_EVENT_CONTEXT_PERF_COUNTER) {
}
}
if (opt_kernel) {
- /* Create kernel domain */
- dom.type = LTTNG_DOMAIN_KERNEL;
-
DBG("Adding kernel context");
- ret = lttng_add_context(&dom, &context, opt_event_name,
+ ret = lttng_add_context(handle, &context, opt_event_name,
opt_channel_name);
if (ret < 0) {
fprintf(stderr, "%s: ", type->opt->symbol);
- goto error;
+ continue;
} else {
MSG("Kernel context %s added", type->opt->symbol);
}
ret = CMD_NOT_IMPLEMENTED;
goto error;
} else {
- ERR("Please specify a tracer (kernel or user-space)");
+ ERR("Please specify a tracer (--kernel or --userspace)");
goto error;
}
}
error:
+ lttng_destroy_handle(handle);
+
return ret;
}
char *tmp;
static poptContext pc;
struct ctx_type *type, *tmptype;
+ char *session_name = NULL;
if (argc < 2) {
usage(stderr);
}
}
- ret = add_context();
+ if (!opt_session_name) {
+ session_name = get_session_name();
+ if (session_name == NULL) {
+ ret = -1;
+ goto end;
+ }
+ } else {
+ session_name = opt_session_name;
+ }
+
+ ret = add_context(session_name);
/* Cleanup allocated memory */
cds_list_for_each_entry_safe(type, tmptype, &ctx_type_list.head, list) {