From 63dd9b285a6b2d71173951daa2245548946e0c9a Mon Sep 17 00:00:00 2001 From: Philippe Proulx Date: Fri, 28 Jul 2017 15:48:32 -0400 Subject: [PATCH] lttng enable-channel: --blocking-timeout opt.: use `inf` instead of -1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit It might be -1 for the API, but for a command-line interface used by humans, `inf` is more meaningful than -1. Signed-off-by: Philippe Proulx Signed-off-by: Jérémie Galarneau --- src/bin/lttng/commands/enable_channels.c | 62 ++++++++++++--------- tests/regression/ust/blocking/test_blocking | 6 +- 2 files changed, 38 insertions(+), 30 deletions(-) diff --git a/src/bin/lttng/commands/enable_channels.c b/src/bin/lttng/commands/enable_channels.c index 19490477e..48c211095 100644 --- a/src/bin/lttng/commands/enable_channels.c +++ b/src/bin/lttng/commands/enable_channels.c @@ -556,42 +556,50 @@ int cmd_enable_channels(int argc, const char **argv) errno = 0; opt_arg = poptGetOptArg(pc); + + if (strcmp(opt_arg, "inf") == 0) { + opt_blocking_timeout.value = (int64_t) -1; + opt_blocking_timeout.set = true; + DBG("Channel blocking timeout set to infinity"); + break; + } + v = strtoll(opt_arg, NULL, 0); if (errno != 0 || (!isdigit(opt_arg[0]) && opt_arg[0] != '-') - || v < -1) { + || v < 0) { ERR("Wrong value in --blocking-timeout parameter: %s", opt_arg); ret = CMD_ERROR; goto end; } - if (v >= 0) { - /* - * While LTTng-UST and LTTng-tools will accept - * a blocking timeout expressed in µs, the - * current tracer implementation relies on - * poll() which takes an "int timeout" parameter - * expressed in msec. - * - * Since the error reporting from the tracer - * is not precise, we perform this check here - * to provide a helpful error message in case of - * overflow. - * - * The setter (liblttng-ctl) also performs an - * equivalent check. - */ - v_msec = v / 1000; - if (v_msec != (int32_t) v_msec) { - ERR("32-bit milliseconds overflow in --blocking-timeout parameter: %s", opt_arg); - ret = CMD_ERROR; - goto end; - } - } else if (v != -1) { - ERR("Invalid negative value passed as --blocking-timeout parameter; -1 (block forever) is the only valid negative value"); + + /* + * While LTTng-UST and LTTng-tools will accept a + * blocking timeout expressed in µs, the current + * tracer implementation relies on poll() which + * takes an "int timeout" parameter expressed in + * msec. + * + * Since the error reporting from the tracer is + * not precise, we perform this check here to + * provide a helpful error message in case of + * overflow. + * + * The setter (liblttng-ctl) also performs an + * equivalent check. + */ + v_msec = v / 1000; + if (v_msec != (int32_t) v_msec) { + ERR("32-bit milliseconds overflow in --blocking-timeout parameter: %s", opt_arg); + ret = CMD_ERROR; + goto end; } + opt_blocking_timeout.value = (int64_t) v; opt_blocking_timeout.set = true; - DBG("Channel blocking timeout set to %" PRId64 " (µs)", - opt_blocking_timeout.value); + DBG("Channel blocking timeout set to %" PRId64 " µs%s", + opt_blocking_timeout.value, + opt_blocking_timeout.value == 0 ? + " (non-blocking)" : ""); break; } case OPT_USERSPACE: diff --git a/tests/regression/ust/blocking/test_blocking b/tests/regression/ust/blocking/test_blocking index c5c95903b..b1c3f2d09 100755 --- a/tests/regression/ust/blocking/test_blocking +++ b/tests/regression/ust/blocking/test_blocking @@ -60,12 +60,12 @@ function test_ust_implicit_no_blocking() function test_ust_implicit_no_blocking_with_channel_blocking() { NUM_EVENT=5000000 - diag "UST implicit non-blocking mode (default) with blocking-timeout=-1 channel: will hang if fails" + diag "UST implicit non-blocking mode (default) with blocking-timeout=inf channel: will hang if fails" start_lttng_sessiond # session in no-output mode create_lttng_session_no_output $SESSION_NAME - enable_ust_lttng_channel_ok $SESSION_NAME $CHANNEL_NAME "--blocking-timeout=-1" + enable_ust_lttng_channel_ok $SESSION_NAME $CHANNEL_NAME "--blocking-timeout=inf" enable_ust_lttng_event_ok $SESSION_NAME "$EVENT_NAME" $CHANNEL_NAME start_lttng_tracing_ok $SESSION_NAME run_app @@ -125,7 +125,7 @@ function test_ust_blocking_no_discard() start_lttng_sessiond create_lttng_session_ok $SESSION_NAME $TRACE_PATH # infinite blocking timeout - enable_ust_lttng_channel_ok $SESSION_NAME $CHANNEL_NAME "--blocking-timeout=-1" + enable_ust_lttng_channel_ok $SESSION_NAME $CHANNEL_NAME "--blocking-timeout=inf" enable_ust_lttng_event_ok $SESSION_NAME "$EVENT_NAME" $CHANNEL_NAME start_lttng_tracing_ok $SESSION_NAME LTTNG_UST_ALLOW_BLOCKING=1 run_app -- 2.34.1