* Command LTTNG_DISABLE_EVENT processed by the client thread.
*/
int cmd_disable_event(struct ltt_session *session, int domain,
- char *channel_name, char *event_name)
+ char *channel_name,
+ struct lttng_event *event)
{
int ret;
+ char *event_name;
+
+ event_name = event->name;
+
+ if (event->loglevel_type || event->loglevel || event->enabled
+ || event->pid || event->filter || event->exclusion) {
+ return LTTNG_ERR_UNK;
+ }
rcu_read_lock();
goto error;
}
- ret = event_kernel_disable_tracepoint(kchan, event_name);
- if (ret != LTTNG_OK) {
+ switch (event->type) {
+ case LTTNG_EVENT_ALL:
+ case LTTNG_EVENT_TRACEPOINT:
+ ret = event_kernel_disable_tracepoint(kchan, event_name);
+ if (ret != LTTNG_OK) {
+ goto error;
+ }
+ break;
+ case LTTNG_EVENT_SYSCALL:
+ ret = event_kernel_disable_syscall(kchan, event_name);
+ break;
+ default:
+ ret = LTTNG_ERR_UNK;
goto error;
}
goto error;
}
- ret = event_ust_disable_tracepoint(usess, uchan, event_name);
- if (ret != LTTNG_OK) {
+ switch (event->type) {
+ case LTTNG_EVENT_ALL:
+ ret = event_ust_disable_tracepoint(usess, uchan, event_name);
+ if (ret != LTTNG_OK) {
+ goto error;
+ }
+ break;
+ default:
+ ret = LTTNG_ERR_UNK;
goto error;
}
assert(usess);
+ switch (event->type) {
+ case LTTNG_EVENT_ALL:
+ break;
+ default:
+ ret = LTTNG_ERR_UNK;
+ goto error;
+ }
+
agt = trace_ust_find_agent(usess, domain);
if (!agt) {
ret = -LTTNG_ERR_UST_EVENT_NOT_FOUND;
* Command LTTNG_DISABLE_ALL_EVENT processed by the client thread.
*/
int cmd_disable_event_all(struct ltt_session *session, int domain,
- char *channel_name)
+ char *channel_name,
+ struct lttng_event *event)
{
int ret;
+ char *event_name;
+
+ event_name = event->name;
rcu_read_lock();
goto error;
}
- ret = event_kernel_disable_all(kchan);
- if (ret != LTTNG_OK) {
+ switch (event->type) {
+ case LTTNG_EVENT_ALL:
+ ret = event_kernel_disable_all(kchan);
+ if (ret != LTTNG_OK) {
+ goto error;
+ }
+ break;
+ case LTTNG_EVENT_SYSCALL:
+ ret = event_kernel_disable_syscall(kchan, event_name);
+ break;
+ default:
+ ret = LTTNG_ERR_UNK;
goto error;
}
goto error;
}
- ret = event_ust_disable_all_tracepoints(usess, uchan);
- if (ret != 0) {
+ switch (event->type) {
+ case LTTNG_EVENT_ALL:
+ ret = event_ust_disable_all_tracepoints(usess, uchan);
+ if (ret != 0) {
+ goto error;
+ }
+ break;
+ default:
+ ret = LTTNG_ERR_UNK;
goto error;
}
assert(usess);
+ switch (event->type) {
+ case LTTNG_EVENT_ALL:
+ break;
+ default:
+ ret = LTTNG_ERR_UNK;
+ goto error;
+ }
+
agt = trace_ust_find_agent(usess, domain);
if (!agt) {
ret = -LTTNG_ERR_UST_EVENT_NOT_FOUND;
goto error;
}
- ret = event_kernel_enable_tracepoint(kchan, event);
- if (ret != LTTNG_OK) {
- if (channel_created) {
- /* Let's not leak a useless channel. */
- kernel_destroy_channel(kchan);
+ switch (event->type) {
+ case LTTNG_EVENT_ALL:
+ case LTTNG_EVENT_TRACEPOINT:
+ ret = event_kernel_enable_tracepoint(kchan, event);
+ if (ret != LTTNG_OK) {
+ if (channel_created) {
+ /* Let's not leak a useless channel. */
+ kernel_destroy_channel(kchan);
+ }
+ goto error;
}
+ break;
+ case LTTNG_EVENT_SYSCALL:
+ ret = event_kernel_enable_syscall(kchan, event->name);
+ break;
+ default:
+ ret = LTTNG_ERR_UNK;
goto error;
}
switch (event_type) {
case LTTNG_EVENT_SYSCALL:
- ret = event_kernel_enable_all_syscalls(kchan, kernel_tracer_fd);
+ ret = event_kernel_enable_syscall(kchan, "");
break;
case LTTNG_EVENT_TRACEPOINT:
/*