perf scripting python: Assign perf_script_context
The scripting_context pointer itself does not change and nor does it need to. Put it directly into the script as a variable at the start so it does not have to be passed on each call into the script. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Jiri Olsa <jolsa@redhat.com> Link: https://lore.kernel.org/r/20210530192308.7382-6-adrian.hunter@intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
67e50ce0e3
commit
cf9bfa6c15
|
@ -91,6 +91,12 @@ PyMODINIT_FUNC PyInit_perf_trace_context(void)
|
|||
NULL, /* m_clear */
|
||||
NULL, /* m_free */
|
||||
};
|
||||
return PyModule_Create(&moduledef);
|
||||
PyObject *mod;
|
||||
|
||||
mod = PyModule_Create(&moduledef);
|
||||
/* Add perf_script_context to the module so it can be imported */
|
||||
PyObject_SetAttrString(mod, "perf_script_context", Py_None);
|
||||
|
||||
return mod;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1599,6 +1599,31 @@ static void python_process_stat_interval(u64 tstamp)
|
|||
Py_DECREF(t);
|
||||
}
|
||||
|
||||
static int perf_script_context_init(void)
|
||||
{
|
||||
PyObject *perf_script_context;
|
||||
PyObject *perf_trace_context;
|
||||
PyObject *dict;
|
||||
int ret;
|
||||
|
||||
perf_trace_context = PyImport_AddModule("perf_trace_context");
|
||||
if (!perf_trace_context)
|
||||
return -1;
|
||||
dict = PyModule_GetDict(perf_trace_context);
|
||||
if (!dict)
|
||||
return -1;
|
||||
|
||||
perf_script_context = _PyCapsule_New(scripting_context, NULL, NULL);
|
||||
if (!perf_script_context)
|
||||
return -1;
|
||||
|
||||
ret = PyDict_SetItemString(dict, "perf_script_context", perf_script_context);
|
||||
if (!ret)
|
||||
ret = PyDict_SetItemString(main_dict, "perf_script_context", perf_script_context);
|
||||
Py_DECREF(perf_script_context);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int run_start_sub(void)
|
||||
{
|
||||
main_module = PyImport_AddModule("__main__");
|
||||
|
@ -1611,6 +1636,9 @@ static int run_start_sub(void)
|
|||
goto error;
|
||||
Py_INCREF(main_dict);
|
||||
|
||||
if (perf_script_context_init())
|
||||
goto error;
|
||||
|
||||
try_call_object("trace_begin", NULL);
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue