X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=lttng%2Flttng.c;h=e538df2fd403f0eefaf2be2c58b3c8a04973067d;hb=ce3d728cd9bfcc0f7d43e08275a92cf04e898662;hp=52c3e3873d27ce967f6cb3294126b64d269144b8;hpb=1c9f794140bd5bf0854e4790cc7ec4a5d3bb1134;p=lttng-tools.git diff --git a/lttng/lttng.c b/lttng/lttng.c index 52c3e3873..e538df2fd 100644 --- a/lttng/lttng.c +++ b/lttng/lttng.c @@ -46,6 +46,7 @@ static int process_opt_create_session(void); static void sighandler(int sig); static int set_signal_handler(void); static int get_cmdline_by_pid(pid_t pid, char **cmdline); +static int validate_options(void); /* * start_client @@ -95,6 +96,7 @@ static int process_client_opt(void) } if (opt_session_uuid != NULL) { + DBG("Set session uuid to %s", opt_session_uuid); lttng_set_current_session_uuid(opt_session_uuid); } @@ -104,7 +106,16 @@ static int process_client_opt(void) if (ret < 0) { goto end; } - MSG("Trace created successfully!\nUse --start PID to start tracing"); + MSG("Trace created successfully!\nUse --start PID to start tracing."); + } + + if (opt_start_trace) { + DBG("Start trace for pid %d", opt_start_trace); + ret = lttng_ust_start_trace(opt_start_trace); + if (ret < 0) { + goto end; + } + MSG("Trace started successfully!"); } return 0; @@ -242,6 +253,29 @@ not_running: return 0; } +/* + * validate_options + * + * Make sure that all options passed to the command line + * are compatible with each others. + * + * On error, return -1 + * On success, return 0 + */ +static int validate_options(void) +{ + if ((opt_session_uuid == NULL) && + (opt_create_trace || opt_start_trace)) { + ERR("Can't act on trace without a session ID.\nPlease specify using --session UUID"); + goto error; + } + + return 0; + +error: + return -1; +} + /* * spawn_sessiond * @@ -376,15 +410,17 @@ end: */ static void sighandler(int sig) { - DBG("%d received", sig); switch (sig) { case SIGTERM: + DBG("SIGTERM catched"); clean_exit(EXIT_FAILURE); break; case SIGCHLD: /* Notify is done */ + DBG("SIGCHLD catched"); break; default: + DBG("Unknown signal %d catched", sig); break; } @@ -421,6 +457,11 @@ int main(int argc, char *argv[]) clean_exit(EXIT_FAILURE); } + ret = validate_options(); + if (ret < 0) { + return EXIT_FAILURE; + } + ret = set_signal_handler(); if (ret < 0) { clean_exit(ret);