From d73c58020df7ccd20d1edd250b0f00f0d7d25b5b Mon Sep 17 00:00:00 2001 From: David Goulet Date: Wed, 26 Feb 2014 11:29:57 -0500 Subject: [PATCH] Fix: add some sane default values to --live opt The lttng create --live now takes optional arguments meaning if no USEC or/and -U are found, some defaults value are used. Fixes #738 Signed-off-by: David Goulet --- doc/man/lttng.1 | 5 +++-- src/bin/lttng/commands/create.c | 35 ++++++++++++++++++++++++++------- src/common/defaults.h | 3 +++ 3 files changed, 34 insertions(+), 9 deletions(-) diff --git a/doc/man/lttng.1 b/doc/man/lttng.1 index ee0ce2bf2..6f9540625 100644 --- a/doc/man/lttng.1 +++ b/doc/man/lttng.1 @@ -255,12 +255,13 @@ Set the session in snapshot mode. Created in no-output mode and uses the URL, if one is specified, as the default snapshot output. Every channel will be set in overwrite mode and with mmap output (splice not supported). .TP -.BR "\-\-live USEC" +.BR "\-\-live [USEC]" Set the session exclusively in live mode. The paremeter is the delay in micro seconds before the data is flushed and streamed. The live mode allows you to stream the trace and view it while it's being recorded by any tracer. For that, you need a lttng-relayd and this session requires a network URL (\-U or -\-C/\-D). +\-C/\-D). If no USEC nor URL is provided, the default is to use a timer value +set to 1000000 and the network URL set to net://127.0.0.1. To read a live session, you can use babeltrace(1) or the live streaming protocol in doc/live-reading-protocol.txt. Here is an example: diff --git a/src/bin/lttng/commands/create.c b/src/bin/lttng/commands/create.c index d234c06a4..2e0337326 100644 --- a/src/bin/lttng/commands/create.c +++ b/src/bin/lttng/commands/create.c @@ -65,7 +65,7 @@ static struct poptOption long_options[] = { {"no-consumer", 0, POPT_ARG_VAL, &opt_no_consumer, 1, 0, 0}, {"disable-consumer", 0, POPT_ARG_VAL, &opt_disable_consumer, 1, 0, 0}, {"snapshot", 0, POPT_ARG_VAL, &opt_snapshot, 1, 0, 0}, - {"live", 0, POPT_ARG_INT, 0, OPT_LIVE_TIMER, 0, 0}, + {"live", 0, POPT_ARG_INT | POPT_ARGFLAG_OPTIONAL, 0, OPT_LIVE_TIMER, 0, 0}, {0, 0, 0, 0, 0, 0, 0} }; @@ -95,11 +95,14 @@ static void usage(FILE *ofp) 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, " --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. Requires a network URL (-U or -C/-D)\n"); - fprintf(ofp, " and a lttng-relayd listening.\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, "\n"); fprintf(ofp, "Extended Options:\n"); fprintf(ofp, "\n"); @@ -344,9 +347,15 @@ static int create_session(void) } if ((opt_live_timer && !opt_url) && (opt_live_timer && !opt_data_url)) { - ERR("You need a network URL (-U or -C/-D) to use live tracing."); - ret = CMD_ERROR; - goto error; + /* Use default live URL if none is found. */ + ret = asprintf(&alloc_url, "net://127.0.0.1"); + if (ret < 0) { + PERROR("asprintf default live URL"); + ret = CMD_FATAL; + goto error; + } + url = alloc_url; + print_str_url = url; } if (opt_snapshot && opt_live_timer) { @@ -401,6 +410,10 @@ static int create_session(void) MSG("Session %s created.", session_name); if (print_str_url && !opt_snapshot) { MSG("Traces will be written in %s", print_str_url); + + if (opt_live_timer) { + MSG("Live timer set to %u usec", opt_live_timer); + } } else if (opt_snapshot) { if (print_str_url) { MSG("Default snapshot output set to: %s", print_str_url); @@ -457,6 +470,14 @@ int cmd_create(int argc, const char **argv) errno = 0; opt_arg = poptGetOptArg(pc); + if (!opt_arg) { + /* Set up default values. */ + opt_live_timer = (uint32_t) DEFAULT_LTTNG_LIVE_TIMER; + DBG("Session live timer interval set to default value %d", + opt_live_timer); + break; + } + v = strtoul(opt_arg, NULL, 0); if (errno != 0 || !isdigit(opt_arg[0])) { ERR("Wrong value in --live parameter: %s", opt_arg); diff --git a/src/common/defaults.h b/src/common/defaults.h index 7452280d9..2232d5d40 100644 --- a/src/common/defaults.h +++ b/src/common/defaults.h @@ -257,6 +257,9 @@ #define DEFAULT_INDEX_FILE_SUFFIX ".idx" #define DEFAULT_INDEX_DIR "index" +/* Default lttng command live timer value in usec. */ +#define DEFAULT_LTTNG_LIVE_TIMER 1000000 + extern size_t default_channel_subbuf_size; extern size_t default_metadata_subbuf_size; extern size_t default_ust_pid_channel_subbuf_size; -- 2.34.1