X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fevent.c;h=6e9cc006f9e32b3540910dc79c2578ec94e23d40;hp=ac4b0b4a365f7f493973f7389cd58f241c8292ae;hb=bd29c13d4c9296705a4444404a69c0557e5b8cb9;hpb=af061a47af03a507bb9c2fade8f278a2a01fe29c diff --git a/src/bin/lttng-sessiond/event.c b/src/bin/lttng-sessiond/event.c index ac4b0b4a3..6e9cc006f 100644 --- a/src/bin/lttng-sessiond/event.c +++ b/src/bin/lttng-sessiond/event.c @@ -134,10 +134,16 @@ int event_kernel_enable_tracepoint(struct ltt_kernel_session *ksession, if (kevent == NULL) { ret = kernel_create_event(event, kchan); if (ret < 0) { - if (ret == -EEXIST) { + switch (-ret) { + case EEXIST: ret = LTTCOMM_KERN_EVENT_EXIST; - } else { + break; + case ENOSYS: + ret = LTTCOMM_KERN_EVENT_ENOSYS; + break; + default: ret = LTTCOMM_KERN_ENABLE_FAIL; + break; } goto end; } @@ -239,15 +245,27 @@ end: int event_kernel_enable_all(struct ltt_kernel_session *ksession, struct ltt_kernel_channel *kchan, int kernel_tracer_fd) { - int ret; + int tp_ret, syscall_ret; - ret = event_kernel_enable_all_tracepoints(ksession, kchan, kernel_tracer_fd); - if (ret != LTTCOMM_OK) { + tp_ret = event_kernel_enable_all_tracepoints(ksession, kchan, kernel_tracer_fd); + if (tp_ret != LTTCOMM_OK) { goto end; } - ret = event_kernel_enable_all_syscalls(ksession, kchan, kernel_tracer_fd); + + /* + * Reaching this code path means that all tracepoints were enabled without + * errors so we ignore the error value of syscalls. + * + * At the moment, failing to enable syscalls on "lttng enable-event -a -k" + * is not considered an error that need to be returned to the client since + * tracepoints did not fail. Future work will allow us to send back + * multiple errors to the client in one API call. + */ + syscall_ret = event_kernel_enable_all_syscalls(ksession, kchan, + kernel_tracer_fd); + end: - return ret; + return tp_ret; } /*