X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng%2Fcommands%2Fenable_channels.cpp;h=1638d0d446b88108aa2d96e595f622a2831e6298;hb=49cddecdbb1e042877ca3855b177ade68151030f;hp=c302132fbca258e4e5234c679ef4073a38612092;hpb=c1896e2d809e0d32d2d9b8a840755de6d5d70eaf;p=lttng-tools.git diff --git a/src/bin/lttng/commands/enable_channels.cpp b/src/bin/lttng/commands/enable_channels.cpp index c302132fb..1638d0d44 100644 --- a/src/bin/lttng/commands/enable_channels.cpp +++ b/src/bin/lttng/commands/enable_channels.cpp @@ -11,6 +11,7 @@ #include #include +#include #include #include @@ -141,6 +142,7 @@ static int enable_channel(char *session_name, char *channel_list) { struct lttng_channel *channel = nullptr; int ret = CMD_SUCCESS, warn = 0, error = 0, success = 0; + enum lttng_kernel_tracer_status kernel_tracer_status; char *channel_name; struct lttng_domain dom; @@ -309,6 +311,43 @@ static int enable_channel(char *session_name, char *channel_list) error = 1; break; } + /* + * Ask the sessiond for the more details on the status of the kernel tracer. + */ + ret = lttng_get_kernel_tracer_status(&kernel_tracer_status); + if (ret < 0) { + ERR("Failed to get kernel tracer status: %s", lttng_strerror(ret)); + } else { + switch (kernel_tracer_status) { + case LTTNG_KERNEL_TRACER_STATUS_INITIALIZED: + break; + case LTTNG_KERNEL_TRACER_STATUS_ERR_MODULES_UNKNOWN: + MSG("\tKernel module loading failed"); + break; + case LTTNG_KERNEL_TRACER_STATUS_ERR_MODULES_MISSING: + MSG("\tMissing one or more required kernel modules"); + break; + case LTTNG_KERNEL_TRACER_STATUS_ERR_MODULES_SIGNATURE: + MSG("\tKernel module signature error prevented loading of one or more required kernel modules"); + break; + case LTTNG_KERNEL_TRACER_STATUS_ERR_NEED_ROOT: + MSG("\tlttng-sessiond isn't running as root"); + break; + case LTTNG_KERNEL_TRACER_STATUS_ERR_NOTIFIER: + MSG("\tFailed to setup notifiers"); + break; + case LTTNG_KERNEL_TRACER_STATUS_ERR_OPEN_PROC_LTTNG: + MSG("\tlttng-sessiond failed to open proc lttng"); + break; + case LTTNG_KERNEL_TRACER_STATUS_ERR_VERSION_MISMATCH: + MSG("\tVersion mismatch between kernel tracer and kernel tracer ABI"); + break; + default: + MSG("\tUnknown kernel tracer status (%d)", kernel_tracer_status); + break; + } + MSG("\tConsult lttng-sessiond logs for more information"); + } } else { MSG("%s channel %s enabled for session %s", lttng_domain_type_str(dom.type),