projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Preliminary work for full UST support
[lttng-tools.git]
/
lttng
/
commands
/
add_context.c
diff --git
a/lttng/commands/add_context.c
b/lttng/commands/add_context.c
index 38d3cc1dc1425050c0f4740482f6a6157e180418..e82678bfccd08054fee3a1f82dd330f45d9db0f6 100644
(file)
--- a/
lttng/commands/add_context.c
+++ b/
lttng/commands/add_context.c
@@
-47,6
+47,8
@@
enum {
OPT_TYPE,
};
OPT_TYPE,
};
+static struct lttng_handle *handle;
+
/*
* Taken from the LTTng ABI
*/
/*
* Taken from the LTTng ABI
*/
@@
-164,8
+166,8
@@
static struct poptOption long_options[] = {
.u.perf = { \
PERF_TYPE_HW_CACHE, \
(uint64_t) PERF_COUNT_HW_CACHE_##name \
.u.perf = { \
PERF_TYPE_HW_CACHE, \
(uint64_t) PERF_COUNT_HW_CACHE_##name \
-
* (uint64_t) PERF_COUNT_HW_CACHE_OP_##op
\
-
* (uint64_t) PERF_COUNT_HW_CACHE_RESULT_##result
, \
+
| ((uint64_t) PERF_COUNT_HW_CACHE_OP_##op << 8)
\
+
| ((uint64_t) PERF_COUNT_HW_CACHE_RESULT_##result << 16)
, \
}, \
}
}, \
}
@@
-341,7
+343,7
@@
end:
/*
* Add context to channel or event.
*/
/*
* 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;
{
int ret = CMD_SUCCESS;
struct lttng_event_context context;
@@
-349,19
+351,24
@@
static int add_context(void)
struct ctx_type *type;
char *ptr;
struct ctx_type *type;
char *ptr;
- if (set_session_name(opt_session_name) < 0) {
- ret = CMD_ERROR;
+ 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) {
goto error;
}
/* Iterate over all context type given */
cds_list_for_each_entry(type, &ctx_type_list.head, list) {
+
context.ctx = type->opt->ctx_type;
if (context.ctx == LTTNG_EVENT_CONTEXT_PERF_COUNTER) {
context.u.perf_counter.type = type->opt->u.perf.type;
context.u.perf_counter.config = type->opt->u.perf.config;
context.ctx = type->opt->ctx_type;
if (context.ctx == LTTNG_EVENT_CONTEXT_PERF_COUNTER) {
context.u.perf_counter.type = type->opt->u.perf.type;
context.u.perf_counter.config = type->opt->u.perf.config;
- strcpy(context.u.perf_counter.name,
- type->opt->symbol);
+ strcpy(context.u.perf_counter.name, type->opt->symbol);
/* Replace : and - by _ */
while ((ptr = strchr(context.u.perf_counter.name, '-')) != NULL) {
*ptr = '_';
/* Replace : and - by _ */
while ((ptr = strchr(context.u.perf_counter.name, '-')) != NULL) {
*ptr = '_';
@@
-371,14
+378,12
@@
static int add_context(void)
}
}
if (opt_kernel) {
}
}
if (opt_kernel) {
- /* Create kernel domain */
- dom.type = LTTNG_DOMAIN_KERNEL;
-
DBG("Adding kernel context");
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) {
opt_channel_name);
if (ret < 0) {
- goto error;
+ fprintf(stderr, "%s: ", type->opt->symbol);
+ continue;
} else {
MSG("Kernel context %s added", type->opt->symbol);
}
} else {
MSG("Kernel context %s added", type->opt->symbol);
}
@@
-392,12
+397,14
@@
static int add_context(void)
ret = CMD_NOT_IMPLEMENTED;
goto error;
} else {
ret = CMD_NOT_IMPLEMENTED;
goto error;
} else {
- ERR("Please specify a tracer (
kernel or user-
space)");
+ ERR("Please specify a tracer (
--kernel or --user
space)");
goto error;
}
}
error:
goto error;
}
}
error:
+ lttng_destroy_handle(handle);
+
return ret;
}
return ret;
}
@@
-410,6
+417,7
@@
int cmd_add_context(int argc, const char **argv)
char *tmp;
static poptContext pc;
struct ctx_type *type, *tmptype;
char *tmp;
static poptContext pc;
struct ctx_type *type, *tmptype;
+ char *session_name = NULL;
if (argc < 2) {
usage(stderr);
if (argc < 2) {
usage(stderr);
@@
-460,7
+468,17
@@
int cmd_add_context(int argc, const char **argv)
}
}
}
}
- 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) {
/* Cleanup allocated memory */
cds_list_for_each_entry_safe(type, tmptype, &ctx_type_list.head, list) {
This page took
0.024822 seconds
and
4
git commands to generate.