X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lttng-abi.c;h=ede2ae79bd7b15c45ec4ef3864a048cc85f2e006;hb=33a39a3cd074931ab3a2eaff6eb8807091cf8172;hp=eaa2f63f5af57991e2f5ab67460d93e2e60b7dc4;hpb=3c9970797850893aaf1b9019d21868d73580e17d;p=lttng-modules.git diff --git a/lttng-abi.c b/lttng-abi.c index eaa2f63f..ede2ae79 100644 --- a/lttng-abi.c +++ b/lttng-abi.c @@ -929,74 +929,51 @@ int lttng_abi_create_event(struct file *channel_file, default: break; } - switch (event_param->instrumentation) { - default: - event_fd = lttng_get_unused_fd(); - if (event_fd < 0) { - ret = event_fd; - goto fd_error; - } - event_file = anon_inode_getfile("[lttng_event]", - <tng_event_fops, - NULL, O_RDWR); - if (IS_ERR(event_file)) { - ret = PTR_ERR(event_file); - goto file_error; - } - if (event_param->instrumentation == LTTNG_KERNEL_TRACEPOINT) { - struct lttng_enabler *enabler; - - if (event_param->name[strlen(event_param->name) - 1] == '*') { - enabler = lttng_enabler_create(LTTNG_ENABLER_WILDCARD, - event_param, channel); - } else { - enabler = lttng_enabler_create(LTTNG_ENABLER_NAME, - event_param, channel); - } - priv = enabler; + event_fd = lttng_get_unused_fd(); + if (event_fd < 0) { + ret = event_fd; + goto fd_error; + } + event_file = anon_inode_getfile("[lttng_event]", + <tng_event_fops, + NULL, O_RDWR); + if (IS_ERR(event_file)) { + ret = PTR_ERR(event_file); + goto file_error; + } + if (event_param->instrumentation == LTTNG_KERNEL_TRACEPOINT + || event_param->instrumentation == LTTNG_KERNEL_SYSCALL) { + struct lttng_enabler *enabler; + + if (event_param->name[strlen(event_param->name) - 1] == '*') { + enabler = lttng_enabler_create(LTTNG_ENABLER_WILDCARD, + event_param, channel); } else { - struct lttng_event *event; - - /* - * We tolerate no failure path after event creation. It - * will stay invariant for the rest of the session. - */ - event = lttng_event_create(channel, event_param, - NULL, NULL, - event_param->instrumentation); - WARN_ON_ONCE(!event); - if (IS_ERR(event)) { - ret = PTR_ERR(event); - goto event_error; - } - priv = event; + enabler = lttng_enabler_create(LTTNG_ENABLER_NAME, + event_param, channel); } - event_file->private_data = priv; - fd_install(event_fd, event_file); - /* The event holds a reference on the channel */ - atomic_long_inc(&channel_file->f_count); - break; - case LTTNG_KERNEL_SYSCALL: - ret = lttng_syscalls_register(channel, NULL); - if (ret) - goto fd_error; - event_fd = 0; - if (event_param->u.syscall.enable) { - ret = lttng_syscall_filter_enable(channel, - !strcmp(event_param->name, "*") ? - NULL : event_param->name); - if (ret) - goto fd_error; + priv = enabler; + } else { + struct lttng_event *event; - } else { - ret = lttng_syscall_filter_disable(channel, - !strcmp(event_param->name, "*") ? - NULL : event_param->name); - if (ret) - goto fd_error; + /* + * We tolerate no failure path after event creation. It + * will stay invariant for the rest of the session. + */ + event = lttng_event_create(channel, event_param, + NULL, NULL, + event_param->instrumentation); + WARN_ON_ONCE(!event); + if (IS_ERR(event)) { + ret = PTR_ERR(event); + goto event_error; } - break; + priv = event; } + event_file->private_data = priv; + fd_install(event_fd, event_file); + /* The event holds a reference on the channel */ + atomic_long_inc(&channel_file->f_count); return event_fd; event_error: