X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Flib%2Flttng-ctl%2Flttng-ctl.cpp;h=bbc94828e6c828e7b7a9acbe90080654d714202a;hb=303ac4ed4037e45da1976c0951358ec19c5364d0;hp=15a699e24f3fd63837edbc6b11dccfa3ac5b1a10;hpb=1e0019bb584561d6d93ec74b72b2f673dd661f9d;p=lttng-tools.git diff --git a/src/lib/lttng-ctl/lttng-ctl.cpp b/src/lib/lttng-ctl/lttng-ctl.cpp index 15a699e24..bbc94828e 100644 --- a/src/lib/lttng-ctl/lttng-ctl.cpp +++ b/src/lib/lttng-ctl/lttng-ctl.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -2877,6 +2878,34 @@ end: return ret; } +/* + * Get the status of the kernel tracer + * + * Sets the value of the argument + */ +enum lttng_error_code lttng_get_kernel_tracer_status(enum lttng_kernel_tracer_status *out_status) +{ + if (out_status == nullptr) { + return LTTNG_ERR_INVALID; + } + + struct lttcomm_session_msg lsm = {}; + lsm.cmd_type = LTTCOMM_SESSIOND_COMMAND_KERNEL_TRACER_STATUS; + + uint32_t *raw_tracer_status = nullptr; + const auto ask_ret = lttng_ctl_ask_sessiond(&lsm, (void **) &raw_tracer_status); + + const auto tracer_status = + lttng::make_unique_wrapper(raw_tracer_status); + + if (ask_ret != 4) { + return LTTNG_ERR_INVALID; + } + + *out_status = (enum lttng_kernel_tracer_status) * tracer_status; + return LTTNG_OK; +} + /* * Regenerate the metadata for a session. * Return 0 on success, a negative error code on error.