X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=liblttngctl%2Fliblttngctl.c;h=3ff1529a1857434202ac7acbd7f1d71fe1a3607b;hb=50dc1fa67a38503ba9426e3d78edb17f48446796;hp=7d020daad2a9d83ca3a72d6dffd089b3e86189c3;hpb=1657e9bb835a28e66396deac871270fe373d5ff4;p=lttng-tools.git diff --git a/liblttngctl/liblttngctl.c b/liblttngctl/liblttngctl.c index 7d020daad..3ff1529a1 100644 --- a/liblttngctl/liblttngctl.c +++ b/liblttngctl/liblttngctl.c @@ -24,7 +24,7 @@ #include #include -#include +#include #include "liblttsessiondcomm.h" #include "lttngerr.h" @@ -35,11 +35,11 @@ static char sessiond_sock_path[PATH_MAX]; /* Communication structure to ltt-sessiond */ static struct lttcomm_session_msg lsm; -static struct lttcomm_lttng_msg llm; +static struct lttcomm_lttng_header llh; /* Prototypes */ static int check_tracing_group(const char *grp_name); -static int ask_sessiond(enum lttcomm_command_type lct, void **buf); +static int ask_sessiond(enum lttcomm_sessiond_command lct, void **buf); static int recv_data_sessiond(void *buf, size_t len); static int send_data_sessiond(void); static int set_session_daemon_path(void); @@ -105,12 +105,17 @@ end: * * Return size of data (only payload, not header). */ -static int ask_sessiond(enum lttcomm_command_type lct, void **buf) +static int ask_sessiond(enum lttcomm_sessiond_command lct, void **buf) { int ret; size_t size; void *data = NULL; + ret = lttng_connect_sessiond(); + if (ret < 0) { + goto end; + } + lsm.cmd_type = lct; /* Send command to session daemon */ @@ -120,18 +125,18 @@ static int ask_sessiond(enum lttcomm_command_type lct, void **buf) } /* Get header from data transmission */ - ret = recv_data_sessiond(&llm, sizeof(llm)); + ret = recv_data_sessiond(&llh, sizeof(llh)); if (ret < 0) { goto end; } /* Check error code if OK */ - if (llm.ret_code != LTTCOMM_OK) { - ret = -llm.ret_code; + if (llh.ret_code != LTTCOMM_OK) { + ret = -llh.ret_code; goto end; } - size = llm.size_payload; + size = llh.payload_size; if (size == 0) { goto end; } @@ -148,7 +153,7 @@ static int ask_sessiond(enum lttcomm_command_type lct, void **buf) ret = size; end: - /* Reset lsm data struct */ + lttng_disconnect_sessiond(); memset(&lsm, 0, sizeof(lsm)); return ret; } @@ -182,6 +187,21 @@ int lttng_ust_start_trace(pid_t pid) return ret; } +/* + * lttng_ust_stop_trace + * + * Request a trace stop for pid. + */ +int lttng_ust_stop_trace(pid_t pid) +{ + int ret; + + lsm.pid = pid; + ret = ask_sessiond(UST_STOP_TRACE, NULL); + + return ret; +} + /* * lttng_ust_create_trace * @@ -258,7 +278,7 @@ int lttng_create_session(char *name, uuid_t *session_id) goto end; } - uuid_copy(*session_id, llm.session_id); + uuid_copy(*session_id, llh.session_id); end: return ret; @@ -355,9 +375,9 @@ int lttng_disconnect_sessiond(void) * * Set the session uuid for current lsm. */ -void lttng_set_current_session_uuid(char *uuid) +void lttng_set_current_session_uuid(uuid_t *uuid) { - uuid_parse(uuid, lsm.session_id); + uuid_copy(lsm.session_id, *uuid); } /*