X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=src%2Fbin%2Flttng%2Fcommands%2Fcreate.c;h=525464aa822d90b556308d830196eb38ed92b898;hb=3ee1477aed1f58ff8cabdc4758dc2551590b4aff;hp=19c560272bf3c35740adce8e05c5ddcf86c3a6f0;hpb=0f4fa0d2b30909ff5b0ec872e2babc4cff6f786e;p=lttng-tools.git diff --git a/src/bin/lttng/commands/create.c b/src/bin/lttng/commands/create.c index 19c560272..525464aa8 100644 --- a/src/bin/lttng/commands/create.c +++ b/src/bin/lttng/commands/create.c @@ -15,7 +15,6 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#define _GNU_SOURCE #define _LGPL_SOURCE #include #include @@ -81,80 +80,7 @@ static struct poptOption long_options[] = { * why this declaration exists and used ONLY in for this command. */ extern int _lttng_create_session_ext(const char *name, const char *url, - const char *datetime, int live_timer); - -/* - * usage - */ -static void usage(FILE *ofp) -{ - fprintf(ofp, "usage: lttng create [NAME] [OPTIONS] \n"); - fprintf(ofp, "\n"); - fprintf(ofp, "Without a given NAME, the default is 'auto--'\n"); - fprintf(ofp, "\n"); - fprintf(ofp, "Options:\n"); - fprintf(ofp, " -h, --help Show this help\n"); - fprintf(ofp, " --list-options Simple listing of options\n"); - fprintf(ofp, " -o, --output PATH Specify output path for traces\n"); - fprintf(ofp, " --no-output Traces will not be outputted\n"); - fprintf(ofp, " --snapshot Set the session in snapshot mode.\n"); - fprintf(ofp, " Created in no-output mode and uses the URL,\n"); - fprintf(ofp, " if one, as the default snapshot output.\n"); - fprintf(ofp, " Every channel will be set in overwrite mode\n"); - fprintf(ofp, " and with mmap output (splice not supported).\n"); - fprintf(ofp, " --live [USEC] Set the session in live-reading mode.\n"); - fprintf(ofp, " The delay parameter in micro-seconds is the\n"); - fprintf(ofp, " maximum time the user can wait for the data\n"); - fprintf(ofp, " to be flushed. Can be set with a network\n"); - fprintf(ofp, " URL (-U or -C/-D) and must have a relayd listening.\n"); - fprintf(ofp, " By default, %u is used for the timer and the\n", - DEFAULT_LTTNG_LIVE_TIMER); - fprintf(ofp, " network URL is set to net://127.0.0.1.\n"); - fprintf(ofp, " --shm-path PATH Path where shared memory holding buffers\n"); - fprintf(ofp, " should be created. Useful when used with pramfs\n"); - fprintf(ofp, " to extract trace data after crash.\n"); - fprintf(ofp, "\n"); - fprintf(ofp, "Extended Options:\n"); - fprintf(ofp, "\n"); - fprintf(ofp, "Using these options, each API call can be controlled individually.\n"); - fprintf(ofp, "\n"); - fprintf(ofp, " -U, --set-url=URL Set URL destination of the trace data.\n"); - fprintf(ofp, " It is persistent for the session lifetime.\n"); - fprintf(ofp, " This will set both data and control URL.\n"); - fprintf(ofp, " -C, --ctrl-url=URL Set control path URL. (Must use -D also)\n"); - fprintf(ofp, " -D, --data-url=URL Set data path URL. (Must use -C also)\n"); - fprintf(ofp, "\n"); - fprintf(ofp, "Please refer to the man page (lttng(1)) for more information on network\n"); - fprintf(ofp, "streaming mechanisms and explanation of the control and data port\n"); - fprintf(ofp, "You must have a running remote lttng-relayd for network streaming\n"); - fprintf(ofp, "\n"); - fprintf(ofp, "URL format is has followed:\n"); - fprintf(ofp, "\n"); - fprintf(ofp, " proto://[HOST|IP][:PORT1[:PORT2]][/TRACE_PATH]\n"); - fprintf(ofp, "\n"); - fprintf(ofp, " Supported protocols are (proto):\n"); - fprintf(ofp, " > file://...\n"); - fprintf(ofp, " Local filesystem full path.\n"); - fprintf(ofp, "\n"); - fprintf(ofp, " > net[6]://...\n"); - fprintf(ofp, " This will use the default network transport layer which is\n"); - fprintf(ofp, " TCP for both control (PORT1) and data port (PORT2).\n"); - fprintf(ofp, " The default ports are respectively 5342 and 5343.\n"); - fprintf(ofp, "\n"); - fprintf(ofp, " > tcp[6]://...\n"); - fprintf(ofp, " Can only be used with -C and -D together\n"); - fprintf(ofp, "\n"); - fprintf(ofp, "NOTE: IPv6 address MUST be enclosed in brackets '[]' (rfc2732)\n"); - fprintf(ofp, "\n"); - fprintf(ofp, "Examples:\n"); - fprintf(ofp, " # lttng create -U net://192.168.1.42\n"); - fprintf(ofp, " Uses TCP and default ports for the given destination.\n"); - fprintf(ofp, " # lttng create -U net6://[fe80::f66d:4ff:fe53:d220]\n"); - fprintf(ofp, " Uses TCP, default ports and IPv6.\n"); - fprintf(ofp, " # lttng create s1 -U net://myhost.com:3229\n"); - fprintf(ofp, " Set the consumer to the remote HOST on port 3229 for control.\n"); - fprintf(ofp, "\n"); -} + const char *datetime); /* * Retrieve the created session and mi output it based on provided argument @@ -460,7 +386,7 @@ static int create_session(void) } ret = lttng_create_session_live(session_name, url, opt_live_timer); } else { - ret = _lttng_create_session_ext(session_name, url, datetime, -1); + ret = _lttng_create_session_ext(session_name, url, datetime); } if (ret < 0) { /* Don't set ret so lttng can interpret the sessiond error. */ @@ -579,14 +505,22 @@ static int spawn_sessiond(char *pathname) kill(getppid(), SIGTERM); /* wake parent */ exit(EXIT_FAILURE); } else if (pid > 0) { - int status; - /* * In daemon mode (--daemonize), sessiond only exits when * it's ready to accept commands. */ for (;;) { - waitpid(pid, &status, 0); + int status; + pid_t wait_pid_ret = waitpid(pid, &status, 0); + + if (wait_pid_ret < 0) { + if (errno == EINTR) { + continue; + } + PERROR("waitpid"); + ret = -errno; + goto end; + } if (WIFSIGNALED(status)) { ERR("Session daemon was killed by signal %d", @@ -692,7 +626,7 @@ int cmd_create(int argc, const char **argv) while ((opt = poptGetNextOpt(pc)) != -1) { switch (opt) { case OPT_HELP: - usage(stdout); + SHOW_HELP(); goto end; case OPT_LIST_OPTIONS: list_cmd_options(stdout, long_options); @@ -732,7 +666,6 @@ int cmd_create(int argc, const char **argv) break; } default: - usage(stderr); ret = CMD_UNDEFINED; goto end; }