OSDN Git Service

perf tools: Add perf_config_scan()
authorAdrian Hunter <adrian.hunter@intel.com>
Mon, 5 Sep 2022 07:34:19 +0000 (10:34 +0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 4 Oct 2022 11:55:21 +0000 (08:55 -0300)
To simplify getting a single config value, add a function to scan a config
variable.

Reviewed-by: Andi Kleen <ak@linux.intel.com>
Reviewed-by: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Link: https://lore.kernel.org/r/20220905073424.3971-2-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/config.c
tools/perf/util/config.h

index 60ce590..3f2ae19 100644 (file)
@@ -908,3 +908,34 @@ void set_buildid_dir(const char *dir)
        /* for communicating with external commands */
        setenv("PERF_BUILDID_DIR", buildid_dir, 1);
 }
+
+struct perf_config_scan_data {
+       const char *name;
+       const char *fmt;
+       va_list args;
+       int ret;
+};
+
+static int perf_config_scan_cb(const char *var, const char *value, void *data)
+{
+       struct perf_config_scan_data *d = data;
+
+       if (!strcmp(var, d->name))
+               d->ret = vsscanf(value, d->fmt, d->args);
+
+       return 0;
+}
+
+int perf_config_scan(const char *name, const char *fmt, ...)
+{
+       struct perf_config_scan_data d = {
+               .name = name,
+               .fmt = fmt,
+       };
+
+       va_start(d.args, fmt);
+       perf_config(perf_config_scan_cb, &d);
+       va_end(d.args);
+
+       return d.ret;
+}
index 2fd77aa..2e5e808 100644 (file)
@@ -29,6 +29,7 @@ typedef int (*config_fn_t)(const char *, const char *, void *);
 
 int perf_default_config(const char *, const char *, void *);
 int perf_config(config_fn_t fn, void *);
+int perf_config_scan(const char *name, const char *fmt, ...) __scanf(2, 3);
 int perf_config_set(struct perf_config_set *set,
                    config_fn_t fn, void *data);
 int perf_config_int(int *dest, const char *, const char *);