X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng%2Futils.cpp;h=403ee018579f755819877ce5d25109b7f94f24a4;hb=9cde3a4ab8b763df804f8105728d90f59521438b;hp=df03b1127ed96be5b96614d57389d3c60dc719d8;hpb=f74e820c5e8f81d6416f4557bce8b56ee6be4746;p=lttng-tools.git diff --git a/src/bin/lttng/utils.cpp b/src/bin/lttng/utils.cpp index df03b1127..403ee0185 100644 --- a/src/bin/lttng/utils.cpp +++ b/src/bin/lttng/utils.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -711,7 +712,8 @@ lttng::cli::session_list lttng::cli::list_sessions(const struct session_spec& sp case lttng::cli::session_spec::type::NAME: if (spec.value == nullptr) { const auto configured_name = - lttng::make_unique_wrapper(get_session_name()); + lttng::make_unique_wrapper( + get_session_name()); if (configured_name) { const struct lttng::cli::session_spec new_spec( @@ -739,3 +741,53 @@ lttng::cli::session_list lttng::cli::list_sessions(const struct session_spec& sp return lttng::cli::session_list(); } + +void print_kernel_tracer_status_error() +{ + if (lttng_opt_mi) { + return; + } + + enum lttng_kernel_tracer_status kernel_tracer_status; + const auto 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: + return; + case LTTNG_KERNEL_TRACER_STATUS_ERR_MODULES_UNKNOWN: + std::cerr << "\tKernel module loading failed" << std::endl; + break; + case LTTNG_KERNEL_TRACER_STATUS_ERR_MODULES_MISSING: + std::cerr << "\tMissing one or more required kernel modules" << std::endl; + break; + case LTTNG_KERNEL_TRACER_STATUS_ERR_MODULES_SIGNATURE: + std::cerr + << "\tKernel module signature error prevented loading of one or more required kernel modules" + << std::endl; + break; + case LTTNG_KERNEL_TRACER_STATUS_ERR_NEED_ROOT: + std::cerr << "\tlttng-sessiond isn't running as root" << std::endl; + break; + case LTTNG_KERNEL_TRACER_STATUS_ERR_NOTIFIER: + std::cerr << "\tFailed to setup notifiers" << std::endl; + break; + case LTTNG_KERNEL_TRACER_STATUS_ERR_OPEN_PROC_LTTNG: + std::cerr << "\tlttng-sessiond failed to open /proc/lttng" << std::endl; + break; + case LTTNG_KERNEL_TRACER_STATUS_ERR_VERSION_MISMATCH: + std::cerr << "\tVersion mismatch between kernel tracer and kernel tracer ABI" + << std::endl; + break; + default: + std::cerr << lttng::format("\t\tUnknown kernel tracer status (%d)", + static_cast(kernel_tracer_status)) + << std::endl; + break; + } + + std::cerr << "\tConsult lttng-sessiond logs for more information" << std::endl; + } +}