X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng%2Fcommands%2Fenable_channels.c;h=d026af4337332ddfa08c05b3f912aa40085e9b18;hp=02a31800a8766cd04a57ed55765cb5636dae857e;hb=1624d5b7ba86633d36f3a5c86ea1df5d308c4360;hpb=6d5d85c79765744fcad6ba189a256784b825e7bf diff --git a/src/bin/lttng/commands/enable_channels.c b/src/bin/lttng/commands/enable_channels.c index 02a31800a..d026af433 100644 --- a/src/bin/lttng/commands/enable_channels.c +++ b/src/bin/lttng/commands/enable_channels.c @@ -49,6 +49,8 @@ enum { OPT_READ_TIMER, OPT_USERSPACE, OPT_LIST_OPTIONS, + OPT_TRACEFILE_SIZE, + OPT_TRACEFILE_COUNT, }; static struct lttng_handle *handle; @@ -73,6 +75,8 @@ static struct poptOption long_options[] = { {"buffers-uid", 0, POPT_ARG_VAL, &opt_buffer_uid, 1, 0, 0}, {"buffers-pid", 0, POPT_ARG_VAL, &opt_buffer_pid, 1, 0, 0}, {"buffers-global", 0, POPT_ARG_VAL, &opt_buffer_global, 1, 0, 0}, + {"tracefile-size", 'C', POPT_ARG_INT, 0, OPT_TRACEFILE_SIZE, 0, 0}, + {"tracefile-count", 'W', POPT_ARG_INT, 0, OPT_TRACEFILE_COUNT, 0, 0}, {0, 0, 0, 0, 0, 0, 0} }; @@ -115,6 +119,11 @@ static void usage(FILE *ofp) fprintf(ofp, " --buffers-uid Use per UID buffer (-u only)\n"); fprintf(ofp, " --buffers-pid Use per PID buffer (-u only)\n"); fprintf(ofp, " --buffers-global Use shared buffer for the whole system (-k only)\n"); + fprintf(ofp, " -C, --tracefile-size SIZE\n"); + fprintf(ofp, " Maximum size of of each tracefile within a stream (in bytes).\n"); + fprintf(ofp, " -W, --tracefile-count COUNT\n"); + fprintf(ofp, " Used in conjunction with -C option, this will limit the number\n"); + fprintf(ofp, " of files created to the specified count.\n"); fprintf(ofp, "\n"); } @@ -147,6 +156,12 @@ static void set_default_attr(struct lttng_domain *dom) if (chan.attr.output == -1) { chan.attr.output = default_attr.output; } + if (chan.attr.tracefile_count == -1) { + chan.attr.tracefile_count = default_attr.tracefile_count; + } + if (chan.attr.tracefile_size == -1) { + chan.attr.tracefile_size = default_attr.tracefile_size; + } } /* @@ -179,6 +194,15 @@ static int enable_channel(char *session_name) set_default_attr(&dom); + if ((chan.attr.tracefile_size > 0) && + (chan.attr.tracefile_size < chan.attr.subbuf_size)) { + ERR("Tracefile_size must be greater than or equal to subbuf_size " + "(%" PRIu64 " < %" PRIu64 ")", + chan.attr.tracefile_size, chan.attr.subbuf_size); + ret = CMD_ERROR; + goto error; + } + /* Setting channel output */ if (opt_output) { if (!strncmp(output_mmap, opt_output, strlen(output_mmap))) { @@ -307,6 +331,16 @@ int cmd_enable_channels(int argc, const char **argv) case OPT_USERSPACE: opt_userspace = 1; break; + case OPT_TRACEFILE_SIZE: + chan.attr.tracefile_size = atoll(poptGetOptArg(pc)); + DBG("Maximum tracefile size set to %" PRIu64, + chan.attr.tracefile_size); + break; + case OPT_TRACEFILE_COUNT: + chan.attr.tracefile_count = atoll(poptGetOptArg(pc)); + DBG("Maximum tracefile count set to %" PRIu64, + chan.attr.tracefile_count); + break; case OPT_LIST_OPTIONS: list_cmd_options(stdout, long_options); goto end;