X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=lttng%2Flttng.c;h=3878fb8367614654d1e837951c121024803e8366;hp=b08ecfed8af6debe14aeff7d4f35eb691cc42cd5;hb=df0da1392bb6c77fff7fc65be518dce7de457ed7;hpb=aaf975194bf54e911e7464b3723b2f247dbeb78b diff --git a/lttng/lttng.c b/lttng/lttng.c index b08ecfed8..3878fb836 100644 --- a/lttng/lttng.c +++ b/lttng/lttng.c @@ -56,6 +56,7 @@ static int set_signal_handler(void); static int process_client_opt(void) { int ret; + uuid_t uuid; /* Connect to the session daemon */ ret = lttng_connect_sessiond(); @@ -84,6 +85,27 @@ static int process_client_opt(void) } } + if (opt_destroy_session != NULL) { + uuid_parse(opt_destroy_session, uuid); + ret = lttng_destroy_session(&uuid); + if (ret < 0) { + goto end; + } + } + + if (opt_session_uuid != NULL) { + lttng_set_current_session_uuid(opt_session_uuid); + } + + if (opt_create_trace) { + DBG("Create trace for pid %d", opt_create_trace); + ret = lttng_ust_create_trace(opt_create_trace); + if (ret < 0) { + goto end; + } + MSG("Trace created successfully!\nUse --start PID to start tracing"); + } + return 0; end: @@ -100,15 +122,18 @@ end: static int process_opt_create_session(void) { int ret; - char *session_id; + uuid_t session_id; + char str_uuid[37]; ret = lttng_create_session(opt_create_session, &session_id); if (ret < 0) { goto error; } + uuid_unparse(session_id, str_uuid); + MSG("Session created:"); - MSG(" %s (%s)", opt_create_session, session_id); + MSG(" %s (%s)", opt_create_session, str_uuid); error: return ret; @@ -341,6 +366,9 @@ static void sighandler(int sig) void clean_exit(int code) { DBG("Clean exit"); + if (lttng_disconnect_sessiond() < 0) { + ERR("Session daemon disconnect failed."); + } exit(code); } @@ -360,12 +388,12 @@ int main(int argc, char *argv[]) ret = parse_args(argc, (const char **) argv); if (ret < 0) { - return EXIT_FAILURE; + clean_exit(EXIT_FAILURE); } ret = set_signal_handler(); if (ret < 0) { - return ret; + clean_exit(ret); } if (opt_tracing_group != NULL) { @@ -378,7 +406,7 @@ int main(int argc, char *argv[]) DBG("Kernel tracing activated"); if (getuid() != 0) { ERR("%s must be setuid root", progname); - return -EPERM; + clean_exit(-EPERM); } } @@ -386,13 +414,15 @@ int main(int argc, char *argv[]) * If no, a daemon will be spawned. */ if (opt_no_sessiond == 0 && (check_ltt_sessiond() < 0)) { - return EXIT_FAILURE; + clean_exit(EXIT_FAILURE); } ret = process_client_opt(); if (ret < 0) { - return ret; + clean_exit(ret); } + clean_exit(0); + return 0; }