Commit cf9bfa6c authored by Adrian Hunter's avatar Adrian Hunter Committed by Arnaldo Carvalho de Melo

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: default avatarAdrian 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.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 67e50ce0
...@@ -91,6 +91,12 @@ PyMODINIT_FUNC PyInit_perf_trace_context(void) ...@@ -91,6 +91,12 @@ PyMODINIT_FUNC PyInit_perf_trace_context(void)
NULL, /* m_clear */ NULL, /* m_clear */
NULL, /* m_free */ 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 #endif
...@@ -1599,6 +1599,31 @@ static void python_process_stat_interval(u64 tstamp) ...@@ -1599,6 +1599,31 @@ static void python_process_stat_interval(u64 tstamp)
Py_DECREF(t); 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) static int run_start_sub(void)
{ {
main_module = PyImport_AddModule("__main__"); main_module = PyImport_AddModule("__main__");
...@@ -1611,6 +1636,9 @@ static int run_start_sub(void) ...@@ -1611,6 +1636,9 @@ static int run_start_sub(void)
goto error; goto error;
Py_INCREF(main_dict); Py_INCREF(main_dict);
if (perf_script_context_init())
goto error;
try_call_object("trace_begin", NULL); try_call_object("trace_begin", NULL);
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment