X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Flib%2Flttng-ctl%2Flttng-ctl.cpp;h=3d0c8b412cc7297914051a3417831d417857bf28;hp=b9311a07ef2051bfeb6243e071f381aef3f90379;hb=HEAD;hpb=cd9adb8b829564212158943a0d279bb35322ab30 diff --git a/src/lib/lttng-ctl/lttng-ctl.cpp b/src/lib/lttng-ctl/lttng-ctl.cpp index b9311a07e..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 @@ -52,12 +53,12 @@ #include #include -#define COPY_DOMAIN_PACKED(dst, src) \ - do { \ - struct lttng_domain _tmp_domain; \ - \ - lttng_ctl_copy_lttng_domain(&_tmp_domain, &src); \ - dst = _tmp_domain; \ +#define COPY_DOMAIN_PACKED(dst, src) \ + do { \ + struct lttng_domain _tmp_domain; \ + \ + lttng_ctl_copy_lttng_domain(&_tmp_domain, &(src)); \ + (dst) = _tmp_domain; \ } while (0) /* Socket to session daemon for communication */ @@ -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.