X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng%2Fcommands%2Fenable_channels.c;h=c4bbc1170f30b17b5ed0935aa2348db43b8e986c;hb=27df255210fe8e836c36fa1d924d2a24e585ebca;hp=49e16abf43f5184c35ad0274e9641096c3853192;hpb=d16dee89723b8d5826d75073314378162f0f0e3f;p=lttng-tools.git diff --git a/src/bin/lttng/commands/enable_channels.c b/src/bin/lttng/commands/enable_channels.c index 49e16abf4..c4bbc1170 100644 --- a/src/bin/lttng/commands/enable_channels.c +++ b/src/bin/lttng/commands/enable_channels.c @@ -89,7 +89,7 @@ static struct poptOption long_options[] = { */ static void usage(FILE *ofp) { - fprintf(ofp, "usage: lttng enable-channel NAME[,NAME2,...] [-u|-k] [OPTIONS]\n"); + fprintf(ofp, "usage: lttng enable-channel NAME[,NAME2,...] (-u | -k) [OPTIONS]\n"); fprintf(ofp, "\n"); fprintf(ofp, "Options:\n"); fprintf(ofp, " -h, --help Show this help\n"); @@ -130,8 +130,8 @@ static void usage(FILE *ofp) DEFAULT_UST_PID_CHANNEL_OUTPUT == LTTNG_EVENT_MMAP ? output_mmap : output_splice, DEFAULT_KERNEL_CHANNEL_OUTPUT == LTTNG_EVENT_MMAP ? output_mmap : output_splice, DEFAULT_METADATA_OUTPUT == LTTNG_EVENT_MMAP ? output_mmap : output_splice); - 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-uid Use per UID buffer (-u/-j only)\n"); + fprintf(ofp, " --buffers-pid Use per PID buffer (-u/-j 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 each tracefile within a stream (in bytes). 0 means unlimited.\n"); @@ -202,18 +202,18 @@ static int enable_channel(char *session_name) } } else if (opt_userspace) { dom.type = LTTNG_DOMAIN_UST; - if (opt_buffer_uid) { - dom.buf_type = LTTNG_BUFFER_PER_UID; + if (opt_buffer_pid) { + dom.buf_type = LTTNG_BUFFER_PER_PID; } else { if (opt_buffer_global) { ERR("Buffer type not supported for domain -u"); ret = CMD_ERROR; goto error; } - dom.buf_type = LTTNG_BUFFER_PER_PID; + dom.buf_type = LTTNG_BUFFER_PER_UID; } } else { - ERR("Please specify a tracer (-k/--kernel or -u/--userspace)"); + print_missing_domain(); ret = CMD_ERROR; goto error; } @@ -269,6 +269,7 @@ static int enable_channel(char *session_name) switch (-ret) { case LTTNG_ERR_KERN_CHAN_EXIST: case LTTNG_ERR_UST_CHAN_EXIST: + case LTTNG_ERR_CHAN_EXIST: WARN("Channel %s: %s (session %s)", channel_name, lttng_strerror(ret), session_name); goto error; @@ -280,8 +281,7 @@ static int enable_channel(char *session_name) warn = 1; } else { MSG("%s channel %s enabled for session %s", - opt_kernel ? "Kernel" : "UST", channel_name, - session_name); + get_domain_str(dom.type), channel_name, session_name); } /* Next event */ @@ -356,6 +356,13 @@ int cmd_enable_channels(int argc, const char **argv) order = get_count_order_u64(chan.attr.subbuf_size); assert(order >= 0); rounded_size = 1ULL << order; + if (rounded_size < chan.attr.subbuf_size) { + ERR("The subbuf size (%" PRIu64 ") is rounded and overflows!", + chan.attr.subbuf_size); + ret = CMD_ERROR; + goto end; + } + if (rounded_size != chan.attr.subbuf_size) { WARN("The subbuf size (%" PRIu64 ") is rounded to the next power of 2 (%" PRIu64 ")", chan.attr.subbuf_size, rounded_size); @@ -385,6 +392,13 @@ int cmd_enable_channels(int argc, const char **argv) order = get_count_order_u64(chan.attr.num_subbuf); assert(order >= 0); rounded_size = 1ULL << order; + if (rounded_size < chan.attr.num_subbuf) { + ERR("The number of subbuffers (%" PRIu64 ") is rounded and overflows!", + chan.attr.num_subbuf); + ret = CMD_ERROR; + goto end; + } + if (rounded_size != chan.attr.num_subbuf) { WARN("The number of subbuffers (%" PRIu64 ") is rounded to the next power of 2 (%" PRIu64 ")", chan.attr.num_subbuf, rounded_size);