static int opt_pid;
static int opt_userspace;
+static char *opt_cmd_name;
static int opt_kernel;
static char *opt_channel;
static int opt_domain;
enum {
OPT_HELP = 1,
+ OPT_USERSPACE,
};
static struct lttng_handle *handle;
/* longName, shortName, argInfo, argPtr, value, descrip, argDesc */
{"help", 'h', POPT_ARG_NONE, 0, OPT_HELP, 0, 0},
{"kernel", 'k', POPT_ARG_VAL, &opt_kernel, 1, 0, 0},
- {"userspace", 'u', POPT_ARG_VAL, &opt_userspace, 1, 0, 0},
+ {"userspace", 'u', POPT_ARG_STRING | POPT_ARGFLAG_OPTIONAL, &opt_cmd_name, OPT_USERSPACE, 0, 0},
{"pid", 'p', POPT_ARG_INT, &opt_pid, 0, 0, 0},
{"channel", 'c', POPT_ARG_STRING, &opt_channel, 0, 0, 0},
{"domain", 'd', POPT_ARG_VAL, &opt_domain, 1, 0, 0},
return cmdline;
}
+static
+const char *active_string(int value)
+{
+ switch (value) {
+ case 0: return " [inactive]";
+ case 1: return " [active]";
+ case -1: return "";
+ default: return NULL;
+ }
+}
+
+static
+const char *enabled_string(int value)
+{
+ switch (value) {
+ case 0: return " [disabled]";
+ case 1: return " [enabled]";
+ case -1: return "";
+ default: return NULL;
+ }
+}
+
+static
+const char *loglevel_string_pre(const char *loglevel)
+{
+ if (loglevel[0] == '\0')
+ return "";
+ else
+ return " (loglevel: ";
+}
+
+static
+const char *loglevel_string_post(const char *loglevel)
+{
+ if (loglevel[0] == '\0')
+ return "";
+ else
+ return ")";
+}
+
/*
* Pretty print single event.
*/
{
switch (event->type) {
case LTTNG_EVENT_TRACEPOINT:
- MSG("%s%s (type: tracepoint) [enabled: %d]", indent6,
- event->name, event->enabled);
+ MSG("%s%s%s%s%s (type: tracepoint)%s", indent6,
+ event->name,
+ loglevel_string_pre(event->loglevel),
+ event->loglevel,
+ loglevel_string_post(event->loglevel),
+ enabled_string(event->enabled));
break;
case LTTNG_EVENT_PROBE:
- MSG("%s%s (type: probe) [enabled: %d]", indent6,
- event->name, event->enabled);
+ MSG("%s%s (type: probe)%s", indent6,
+ event->name, enabled_string(event->enabled));
if (event->attr.probe.addr != 0) {
MSG("%saddr: 0x%" PRIx64, indent8, event->attr.probe.addr);
} else {
break;
case LTTNG_EVENT_FUNCTION:
case LTTNG_EVENT_FUNCTION_ENTRY:
- MSG("%s%s (type: function) [enabled: %d]", indent6,
- event->name, event->enabled);
+ MSG("%s%s (type: function)%s", indent6,
+ event->name, enabled_string(event->enabled));
MSG("%ssymbol: \"%s\"", indent8, event->attr.ftrace.symbol_name);
break;
case LTTNG_EVENT_SYSCALL:
- MSG("%s (type: syscall) [enabled: %d]", indent6,
- event->enabled);
+ MSG("%s (type: syscall)%s", indent6,
+ enabled_string(event->enabled));
break;
case LTTNG_EVENT_NOOP:
- MSG("%s (type: noop) [enabled: %d]", indent6,
- event->enabled);
+ MSG("%s (type: noop)%s", indent6,
+ enabled_string(event->enabled));
+ break;
+ case LTTNG_EVENT_TRACEPOINT_LOGLEVEL:
+ MSG("%s%s (type: tracepoint loglevel)%s", indent6,
+ event->name, enabled_string(event->enabled));
break;
case LTTNG_EVENT_ALL:
/* We should never have "all" events in list. */
MSG("\n%sEvents:", indent4);
if (count == 0) {
- MSG("%sNone", indent6);
+ MSG("%sNone\n", indent6);
goto end;
}
*/
static void print_channel(struct lttng_channel *channel)
{
- MSG("- %s (enabled: %d):\n", channel->name, channel->enabled);
+ MSG("- %s:%s\n", channel->name, enabled_string(channel->enabled));
MSG("%sAttributes:", indent4);
MSG("%soverwrite mode: %d", indent6, channel->attr.overwrite);
unsigned int chan_found = 0;
struct lttng_channel *channels = NULL;
- DBG("Listing channel(s) (%s)", channel_name);
+ DBG("Listing channel(s) (%s)", channel_name ? : "<all>");
count = lttng_list_channels(handle, &channels);
if (count < 0) {
if (session_name != NULL) {
if (strncmp(sessions[i].name, session_name, NAME_MAX) == 0) {
session_found = 1;
- MSG("Tracing session %s:", session_name);
+ MSG("Tracing session %s:%s", session_name, active_string(sessions[i].enabled));
MSG("%sTrace path: %s\n", indent4, sessions[i].path);
break;
}
continue;
}
- MSG(" %d) %s (%s)", i + 1, sessions[i].name, sessions[i].path);
+ MSG(" %d) %s (%s)%s", i + 1, sessions[i].name, sessions[i].path, active_string(sessions[i].enabled));
if (session_found) {
break;
int cmd_list(int argc, const char **argv)
{
int opt, i, ret = CMD_SUCCESS;
- unsigned int nb_domain;
+ int nb_domain;
const char *session_name;
static poptContext pc;
struct lttng_domain domain;
case OPT_HELP:
usage(stderr);
goto end;
+ case OPT_USERSPACE:
+ opt_userspace = 1;
+ break;
default:
usage(stderr);
ret = CMD_UNDEFINED;