mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-11-01 09:13:37 +00:00
perf scripting python: Add function to get a config value
This can be used to get config values like which objdump Perf uses for disassembly. Reviewed-by: Leo Yan <leo.yan@arm.com> Signed-off-by: James Clark <james.clark@linaro.org> Tested-by: Ganapatrao Kulkarni <gankulkarni@os.amperecomputing.com> Cc: Ben Gainey <ben.gainey@arm.com> Cc: Suzuki K Poulose <suzuki.poulose@arm.com> Cc: Will Deacon <will@kernel.org> Cc: Mathieu Poirier <mathieu.poirier@linaro.org> Cc: Mike Leach <mike.leach@linaro.org> Cc: Ruidong Tian <tianruidong@linux.alibaba.com> Cc: Leo Yan <leo.yan@linux.dev> Cc: Benjamin Gray <bgray@linux.ibm.com> Cc: linux-arm-kernel@lists.infradead.org Cc: coresight@lists.linaro.org Cc: John Garry <john.g.garry@oracle.com> Cc: scclevenger@os.amperecomputing.com Link: https://lore.kernel.org/r/20240916135743.1490403-4-james.clark@linaro.org Signed-off-by: Namhyung Kim <namhyung@kernel.org>
This commit is contained in:
parent
ba5ae78a5a
commit
9943581c64
4 changed files with 35 additions and 1 deletions
|
|
@ -624,7 +624,7 @@ as perf_trace_context.perf_script_context .
|
|||
perf_set_itrace_options(context, itrace_options) - set --itrace options if they have not been set already
|
||||
perf_sample_srcline(context) - returns source_file_name, line_number
|
||||
perf_sample_srccode(context) - returns source_file_name, line_number, source_line
|
||||
|
||||
perf_config_get(config_name) - returns the value of the named config item, or None if unset
|
||||
|
||||
Util.py Module
|
||||
~~~~~~~~~~~~~~
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
#define PY_SSIZE_T_CLEAN
|
||||
|
||||
#include <Python.h>
|
||||
#include "../../../util/config.h"
|
||||
#include "../../../util/trace-event.h"
|
||||
#include "../../../util/event.h"
|
||||
#include "../../../util/symbol.h"
|
||||
|
|
@ -182,6 +183,15 @@ static PyObject *perf_sample_srccode(PyObject *obj, PyObject *args)
|
|||
return perf_sample_src(obj, args, true);
|
||||
}
|
||||
|
||||
static PyObject *__perf_config_get(PyObject *obj, PyObject *args)
|
||||
{
|
||||
const char *config_name;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "s", &config_name))
|
||||
return NULL;
|
||||
return Py_BuildValue("s", perf_config_get(config_name));
|
||||
}
|
||||
|
||||
static PyMethodDef ContextMethods[] = {
|
||||
#ifdef HAVE_LIBTRACEEVENT
|
||||
{ "common_pc", perf_trace_context_common_pc, METH_VARARGS,
|
||||
|
|
@ -199,6 +209,7 @@ static PyMethodDef ContextMethods[] = {
|
|||
METH_VARARGS, "Get source file name and line number."},
|
||||
{ "perf_sample_srccode", perf_sample_srccode,
|
||||
METH_VARARGS, "Get source file name, line number and line."},
|
||||
{ "perf_config_get", __perf_config_get, METH_VARARGS, "Get perf config entry"},
|
||||
{ NULL, NULL, 0, NULL}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -912,6 +912,7 @@ void set_buildid_dir(const char *dir)
|
|||
struct perf_config_scan_data {
|
||||
const char *name;
|
||||
const char *fmt;
|
||||
const char *value;
|
||||
va_list args;
|
||||
int ret;
|
||||
};
|
||||
|
|
@ -939,3 +940,24 @@ int perf_config_scan(const char *name, const char *fmt, ...)
|
|||
|
||||
return d.ret;
|
||||
}
|
||||
|
||||
static int perf_config_get_cb(const char *var, const char *value, void *data)
|
||||
{
|
||||
struct perf_config_scan_data *d = data;
|
||||
|
||||
if (!strcmp(var, d->name))
|
||||
d->value = value;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
const char *perf_config_get(const char *name)
|
||||
{
|
||||
struct perf_config_scan_data d = {
|
||||
.name = name,
|
||||
.value = NULL,
|
||||
};
|
||||
|
||||
perf_config(perf_config_get_cb, &d);
|
||||
return d.value;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,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);
|
||||
const char *perf_config_get(const char *name);
|
||||
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 *);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue