X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=lttng%2Fcommands%2Fadd_context.c;h=44c4d48155714e9a33c96784f18a71b359cd88a7;hb=9730260e7e733b421e1af26a9953f938de2628cc;hp=e82678bfccd08054fee3a1f82dd330f45d9db0f6;hpb=16ab6b8a9c89f170d7047b386dfe9a93c4d59a58;p=lttng-tools.git diff --git a/lttng/commands/add_context.c b/lttng/commands/add_context.c index e82678bfc..44c4d4815 100644 --- a/lttng/commands/add_context.c +++ b/lttng/commands/add_context.c @@ -40,11 +40,14 @@ static char *opt_session_name; static int *opt_kernel; static int opt_pid_all; static int opt_userspace; +static char *opt_cmd_name; static pid_t opt_pid; +static char *opt_type; enum { OPT_HELP = 1, OPT_TYPE, + OPT_USERSPACE, }; static struct lttng_handle *handle; @@ -55,7 +58,7 @@ static struct lttng_handle *handle; enum context_type { CONTEXT_PID = 0, CONTEXT_PERF_COUNTER = 1, - CONTEXT_COMM = 2, + CONTEXT_PROCNAME = 2, CONTEXT_PRIO = 3, CONTEXT_NICE = 4, CONTEXT_VPID = 5, @@ -138,10 +141,10 @@ static struct poptOption long_options[] = { {"channel", 'c', POPT_ARG_STRING, &opt_channel_name, 0, 0, 0}, {"event", 'e', POPT_ARG_STRING, &opt_event_name, 0, 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, 0, OPT_USERSPACE, 0, 0}, {"all", 0, POPT_ARG_VAL, &opt_pid_all, 1, 0, 0}, {"pid", 'p', POPT_ARG_INT, &opt_pid, 0, 0, 0}, - {"type", 't', POPT_ARG_STRING, 0, OPT_TYPE, 0, 0}, + {"type", 't', POPT_ARG_STRING, &opt_type, OPT_TYPE, 0, 0}, {0, 0, 0, 0, 0, 0, 0} }; @@ -191,7 +194,7 @@ const struct ctx_opts { } u; } ctx_opts[] = { { "pid", CONTEXT_PID }, - { "comm", CONTEXT_COMM }, + { "procname", CONTEXT_PROCNAME }, { "prio", CONTEXT_PRIO }, { "nice", CONTEXT_NICE }, { "vpid", CONTEXT_VPID }, @@ -414,7 +417,6 @@ error: int cmd_add_context(int argc, const char **argv) { int index, opt, ret = CMD_SUCCESS; - char *tmp; static poptContext pc; struct ctx_type *type, *tmptype; char *session_name = NULL; @@ -434,32 +436,27 @@ int cmd_add_context(int argc, const char **argv) ret = CMD_SUCCESS; goto end; case OPT_TYPE: - /* Mandatory field */ - tmp = poptGetOptArg(pc); - if (tmp == NULL) { - usage(stderr); - ret = CMD_ERROR; - free(tmp); - goto end; - } type = malloc(sizeof(struct ctx_type)); if (type == NULL) { perror("malloc ctx_type"); ret = -1; goto end; } - index = find_ctx_type_idx(tmp); + index = find_ctx_type_idx(opt_type); if (index < 0) { - ERR("Unknown context type %s", tmp); + ERR("Unknown context type %s", opt_type); goto end; } type->opt = &ctx_opts[index]; if (type->opt->ctx_type == -1) { - ERR("Unknown context type %s", tmp); + ERR("Unknown context type %s", opt_type); } else { cds_list_add(&type->list, &ctx_type_list.head); } - free(tmp); + break; + case OPT_USERSPACE: + opt_userspace = 1; + opt_cmd_name = poptGetOptArg(pc); break; default: usage(stderr);