strncpy(tmp_events[i].name, event->name, sizeof(tmp_events[i].name));
tmp_events[i].name[sizeof(tmp_events[i].name) - 1] = '\0';
tmp_events[i].enabled = event->enabled;
- tmp_events[i].loglevel = event->loglevel;
+ tmp_events[i].loglevel = event->loglevel_value;
tmp_events[i].loglevel_type = event->loglevel_type;
i++;
}
break;
}
case LTTNG_DOMAIN_UST:
+ case LTTNG_DOMAIN_JUL:
+ case LTTNG_DOMAIN_LOG4J:
+ case LTTNG_DOMAIN_PYTHON:
{
struct ltt_ust_channel *uchan;
+ /*
+ * FIXME
+ *
+ * Current agent implementation limitations force us to allow
+ * only one channel at once in "agent" subdomains. Each
+ * subdomain has a default channel name which must be strictly
+ * adhered to.
+ */
+ if (domain->type == LTTNG_DOMAIN_JUL) {
+ if (strncmp(attr->name, DEFAULT_JUL_CHANNEL_NAME,
+ LTTNG_SYMBOL_NAME_LEN)) {
+ ret = LTTNG_ERR_INVALID_CHANNEL_NAME;
+ goto error;
+ }
+ } else if (domain->type == LTTNG_DOMAIN_LOG4J) {
+ if (strncmp(attr->name, DEFAULT_LOG4J_CHANNEL_NAME,
+ LTTNG_SYMBOL_NAME_LEN)) {
+ ret = LTTNG_ERR_INVALID_CHANNEL_NAME;
+ goto error;
+ }
+ } else if (domain->type == LTTNG_DOMAIN_PYTHON) {
+ if (strncmp(attr->name, DEFAULT_PYTHON_CHANNEL_NAME,
+ LTTNG_SYMBOL_NAME_LEN)) {
+ ret = LTTNG_ERR_INVALID_CHANNEL_NAME;
+ goto error;
+ }
+ }
+
chan_ht = usess->domain_global.channels;
uchan = trace_ust_find_channel_by_name(chan_ht, attr->name);
switch (event->type) {
case LTTNG_EVENT_ALL:
- ret = event_kernel_disable_event_all(kchan);
- if (ret != LTTNG_OK) {
- goto error_unlock;
- }
- break;
- case LTTNG_EVENT_TRACEPOINT: /* fall-through */
+ case LTTNG_EVENT_TRACEPOINT:
case LTTNG_EVENT_SYSCALL:
- if (!strcmp(event_name, "*")) {
- ret = event_kernel_disable_event_type(kchan,
- event->type);
+ case LTTNG_EVENT_PROBE:
+ case LTTNG_EVENT_FUNCTION:
+ case LTTNG_EVENT_FUNCTION_ENTRY:/* fall-through */
+ if (event_name[0] == '\0') {
+ ret = event_kernel_disable_event(kchan,
+ NULL, event->type);
} else {
ret = event_kernel_disable_event(kchan,
- event_name);
- }
- if (ret != LTTNG_OK) {
- goto error_unlock;
+ event_name, event->type);
}
- break;
- case LTTNG_EVENT_PROBE:
- case LTTNG_EVENT_FUNCTION:
- case LTTNG_EVENT_FUNCTION_ENTRY:
- ret = event_kernel_disable_event(kchan, event_name);
if (ret != LTTNG_OK) {
goto error_unlock;
}
/*
* If a non-default channel has been created in the
- * session, explicitely require that -c chan_name needs
+ * session, explicitly require that -c chan_name needs
* to be provided.
*/
if (usess->has_non_default_channel && channel_name[0] == '\0') {
switch (event->type) {
case LTTNG_EVENT_ALL:
- ret = event_ust_disable_tracepoint(usess, uchan, event_name);
+ /*
+ * An empty event name means that everything
+ * should be disabled.
+ */
+ if (event->name[0] == '\0') {
+ ret = event_ust_disable_all_tracepoints(usess, uchan);
+ } else {
+ ret = event_ust_disable_tracepoint(usess, uchan,
+ event_name);
+ }
if (ret != LTTNG_OK) {
goto error_unlock;
}
ret = -LTTNG_ERR_UST_EVENT_NOT_FOUND;
goto error_unlock;
}
- /* The wild card * means that everything should be disabled. */
- if (strncmp(event->name, "*", 1) == 0 && strlen(event->name) == 1) {
+ /*
+ * An empty event name means that everything
+ * should be disabled.
+ */
+ if (event->name[0] == '\0') {
ret = event_agent_disable_all(usess, agt);
} else {
ret = event_agent_disable(usess, agt, event_name);
DBG("Enable event command for event \'%s\'", event->name);
+ rcu_read_lock();
+
ret = validate_event_name(event->name);
if (ret) {
goto error;
}
- rcu_read_lock();
-
switch (domain->type) {
case LTTNG_DOMAIN_KERNEL:
{
event->type = LTTNG_EVENT_SYSCALL; /* Hack */
ret = event_kernel_enable_event(kchan, event,
filter_expression_a, filter_a);
+ /* We have passed ownership */
+ filter_expression_a = NULL;
+ filter_a = NULL;
if (ret != LTTNG_OK) {
- free(filter_expression_a);
- free(filter_a);
goto error;
}
break;
filter_copy = zmalloc(filter_size);
if (!filter_copy) {
ret = LTTNG_ERR_NOMEM;
+ goto error;
}
memcpy(filter_copy, filter, filter_size);
* Create session in no output mode with URIs set to NULL. The uris we've
* received are for a default snapshot output if one.
*/
- ret = cmd_create_session_uri(name, NULL, 0, creds, -1);
+ ret = cmd_create_session_uri(name, NULL, 0, creds, 0);
if (ret != LTTNG_OK) {
goto error;
}
rcu_read_lock();
cds_lfht_for_each_entry(session->ust_session->agents->ht,
&iter.iter, agt, node.node) {
- nb_event = list_lttng_agent_events(agt, events);
+ if (agt->domain == domain) {
+ nb_event = list_lttng_agent_events(
+ agt, events);
+ break;
+ }
}
rcu_read_unlock();
}