1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * Context.c. Python interfaces for perf script.
5 * Copyright (C) 2010 Tom Zanussi <tzanussi@gmail.com>
9 #include "../../../util/trace-event.h"
11 #if PY_MAJOR_VERSION < 3
12 #define _PyCapsule_GetPointer(arg1, arg2) \
13 PyCObject_AsVoidPtr(arg1)
15 PyMODINIT_FUNC
initperf_trace_context(void);
17 #define _PyCapsule_GetPointer(arg1, arg2) \
18 PyCapsule_GetPointer((arg1), (arg2))
20 PyMODINIT_FUNC
PyInit_perf_trace_context(void);
23 static PyObject
*perf_trace_context_common_pc(PyObject
*obj
, PyObject
*args
)
25 static struct scripting_context
*scripting_context
;
29 if (!PyArg_ParseTuple(args
, "O", &context
))
32 scripting_context
= _PyCapsule_GetPointer(context
, NULL
);
33 retval
= common_pc(scripting_context
);
35 return Py_BuildValue("i", retval
);
38 static PyObject
*perf_trace_context_common_flags(PyObject
*obj
,
41 static struct scripting_context
*scripting_context
;
45 if (!PyArg_ParseTuple(args
, "O", &context
))
48 scripting_context
= _PyCapsule_GetPointer(context
, NULL
);
49 retval
= common_flags(scripting_context
);
51 return Py_BuildValue("i", retval
);
54 static PyObject
*perf_trace_context_common_lock_depth(PyObject
*obj
,
57 static struct scripting_context
*scripting_context
;
61 if (!PyArg_ParseTuple(args
, "O", &context
))
64 scripting_context
= _PyCapsule_GetPointer(context
, NULL
);
65 retval
= common_lock_depth(scripting_context
);
67 return Py_BuildValue("i", retval
);
70 static PyMethodDef ContextMethods
[] = {
71 { "common_pc", perf_trace_context_common_pc
, METH_VARARGS
,
72 "Get the common preempt count event field value."},
73 { "common_flags", perf_trace_context_common_flags
, METH_VARARGS
,
74 "Get the common flags event field value."},
75 { "common_lock_depth", perf_trace_context_common_lock_depth
,
76 METH_VARARGS
, "Get the common lock depth event field value."},
77 { NULL
, NULL
, 0, NULL
}
80 #if PY_MAJOR_VERSION < 3
81 PyMODINIT_FUNC
initperf_trace_context(void)
83 (void) Py_InitModule("perf_trace_context", ContextMethods
);
86 PyMODINIT_FUNC
PyInit_perf_trace_context(void)
88 static struct PyModuleDef moduledef
= {
89 PyModuleDef_HEAD_INIT
,
90 "perf_trace_context", /* m_name */
93 ContextMethods
, /* m_methods */
95 NULL
, /* m_traverse */
99 return PyModule_Create(&moduledef
);