mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
gh-96143: Allow Linux perf profiler to see Python calls (GH-96123)
⚠️ ⚠️ Note for reviewers, hackers and fellow systems/low-level/compiler engineers ⚠️ ⚠️ If you have a lot of experience with this kind of shenanigans and want to improve the **first** version, **please make a PR against my branch** or **reach out by email** or **suggest code changes directly on GitHub**. If you have any **refinements or optimizations** please, wait until the first version is merged before starting hacking or proposing those so we can keep this PR productive.
This commit is contained in:
parent
0f733fffe8
commit
6d791a9736
24 changed files with 1412 additions and 2 deletions
|
@ -1149,6 +1149,16 @@ init_interp_main(PyThreadState *tstate)
|
|||
if (_PyTraceMalloc_Init(config->tracemalloc) < 0) {
|
||||
return _PyStatus_ERR("can't initialize tracemalloc");
|
||||
}
|
||||
|
||||
|
||||
#ifdef PY_HAVE_PERF_TRAMPOLINE
|
||||
if (config->perf_profiling) {
|
||||
if (_PyPerfTrampoline_SetCallbacks(&_Py_perfmap_callbacks) < 0 ||
|
||||
_PyPerfTrampoline_Init(config->perf_profiling) < 0) {
|
||||
return _PyStatus_ERR("can't initialize the perf trampoline");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
status = init_sys_streams(tstate);
|
||||
|
@ -1723,6 +1733,7 @@ finalize_interp_clear(PyThreadState *tstate)
|
|||
_PyArg_Fini();
|
||||
_Py_ClearFileSystemEncoding();
|
||||
_Py_Deepfreeze_Fini();
|
||||
_PyPerfTrampoline_Fini();
|
||||
}
|
||||
|
||||
finalize_interp_types(tstate->interp);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue