| #ifndef Py_TRACEMALLOC_H |
| #define Py_TRACEMALLOC_H |
| |
| #ifndef Py_LIMITED_API |
| /* Track an allocated memory block in the tracemalloc module. |
| Return 0 on success, return -1 on error (failed to allocate memory to store |
| the trace). |
| |
| Return -2 if tracemalloc is disabled. |
| |
| If memory block is already tracked, update the existing trace. */ |
| PyAPI_FUNC(int) PyTraceMalloc_Track( |
| unsigned int domain, |
| uintptr_t ptr, |
| size_t size); |
| |
| /* Untrack an allocated memory block in the tracemalloc module. |
| Do nothing if the block was not tracked. |
| |
| Return -2 if tracemalloc is disabled, otherwise return 0. */ |
| PyAPI_FUNC(int) PyTraceMalloc_Untrack( |
| unsigned int domain, |
| uintptr_t ptr); |
| |
| /* Get the traceback where a memory block was allocated. |
| |
| Return a tuple of (filename: str, lineno: int) tuples. |
| |
| Return None if the tracemalloc module is disabled or if the memory block |
| is not tracked by tracemalloc. |
| |
| Raise an exception and return NULL on error. */ |
| PyAPI_FUNC(PyObject*) _PyTraceMalloc_GetTraceback( |
| unsigned int domain, |
| uintptr_t ptr); |
| |
| /* Return non-zero if tracemalloc is tracing */ |
| PyAPI_FUNC(int) _PyTraceMalloc_IsTracing(void); |
| |
| /* Clear the tracemalloc traces */ |
| PyAPI_FUNC(void) _PyTraceMalloc_ClearTraces(void); |
| |
| /* Clear the tracemalloc traces */ |
| PyAPI_FUNC(PyObject *) _PyTraceMalloc_GetTraces(void); |
| |
| /* Clear tracemalloc traceback for an object */ |
| PyAPI_FUNC(PyObject *) _PyTraceMalloc_GetObjectTraceback(PyObject *obj); |
| |
| /* Initialize tracemalloc */ |
| PyAPI_FUNC(int) _PyTraceMalloc_Init(void); |
| |
| /* Start tracemalloc */ |
| PyAPI_FUNC(int) _PyTraceMalloc_Start(int max_nframe); |
| |
| /* Stop tracemalloc */ |
| PyAPI_FUNC(void) _PyTraceMalloc_Stop(void); |
| |
| /* Get the tracemalloc traceback limit */ |
| PyAPI_FUNC(int) _PyTraceMalloc_GetTracebackLimit(void); |
| |
| /* Get the memory usage of tracemalloc in bytes */ |
| PyAPI_FUNC(size_t) _PyTraceMalloc_GetMemory(void); |
| |
| /* Get the current size and peak size of traced memory blocks as a 2-tuple */ |
| PyAPI_FUNC(PyObject *) _PyTraceMalloc_GetTracedMemory(void); |
| |
| /* Set the peak size of traced memory blocks to the current size */ |
| PyAPI_FUNC(void) _PyTraceMalloc_ResetPeak(void); |
| |
| #endif |
| |
| #endif /* !Py_TRACEMALLOC_H */ |