| 1 | #ifndef Py_TRACEMALLOC_H |
| 2 | #define Py_TRACEMALLOC_H |
| 3 | |
| 4 | #ifndef Py_LIMITED_API |
| 5 | /* Track an allocated memory block in the tracemalloc module. |
| 6 | Return 0 on success, return -1 on error (failed to allocate memory to store |
| 7 | the trace). |
| 8 | |
| 9 | Return -2 if tracemalloc is disabled. |
| 10 | |
| 11 | If memory block is already tracked, update the existing trace. */ |
| 12 | PyAPI_FUNC(int) PyTraceMalloc_Track( |
| 13 | unsigned int domain, |
| 14 | uintptr_t ptr, |
| 15 | size_t size); |
| 16 | |
| 17 | /* Untrack an allocated memory block in the tracemalloc module. |
| 18 | Do nothing if the block was not tracked. |
| 19 | |
| 20 | Return -2 if tracemalloc is disabled, otherwise return 0. */ |
| 21 | PyAPI_FUNC(int) PyTraceMalloc_Untrack( |
| 22 | unsigned int domain, |
| 23 | uintptr_t ptr); |
| 24 | |
| 25 | /* Get the traceback where a memory block was allocated. |
| 26 | |
| 27 | Return a tuple of (filename: str, lineno: int) tuples. |
| 28 | |
| 29 | Return None if the tracemalloc module is disabled or if the memory block |
| 30 | is not tracked by tracemalloc. |
| 31 | |
| 32 | Raise an exception and return NULL on error. */ |
| 33 | PyAPI_FUNC(PyObject*) _PyTraceMalloc_GetTraceback( |
| 34 | unsigned int domain, |
| 35 | uintptr_t ptr); |
| 36 | |
| 37 | /* Return non-zero if tracemalloc is tracing */ |
| 38 | PyAPI_FUNC(int) _PyTraceMalloc_IsTracing(void); |
| 39 | |
| 40 | /* Clear the tracemalloc traces */ |
| 41 | PyAPI_FUNC(void) _PyTraceMalloc_ClearTraces(void); |
| 42 | |
| 43 | /* Clear the tracemalloc traces */ |
| 44 | PyAPI_FUNC(PyObject *) _PyTraceMalloc_GetTraces(void); |
| 45 | |
| 46 | /* Clear tracemalloc traceback for an object */ |
| 47 | PyAPI_FUNC(PyObject *) _PyTraceMalloc_GetObjectTraceback(PyObject *obj); |
| 48 | |
| 49 | /* Initialize tracemalloc */ |
| 50 | PyAPI_FUNC(int) _PyTraceMalloc_Init(void); |
| 51 | |
| 52 | /* Start tracemalloc */ |
| 53 | PyAPI_FUNC(int) _PyTraceMalloc_Start(int max_nframe); |
| 54 | |
| 55 | /* Stop tracemalloc */ |
| 56 | PyAPI_FUNC(void) _PyTraceMalloc_Stop(void); |
| 57 | |
| 58 | /* Get the tracemalloc traceback limit */ |
| 59 | PyAPI_FUNC(int) _PyTraceMalloc_GetTracebackLimit(void); |
| 60 | |
| 61 | /* Get the memory usage of tracemalloc in bytes */ |
| 62 | PyAPI_FUNC(size_t) _PyTraceMalloc_GetMemory(void); |
| 63 | |
| 64 | /* Get the current size and peak size of traced memory blocks as a 2-tuple */ |
| 65 | PyAPI_FUNC(PyObject *) _PyTraceMalloc_GetTracedMemory(void); |
| 66 | |
| 67 | /* Set the peak size of traced memory blocks to the current size */ |
| 68 | PyAPI_FUNC(void) _PyTraceMalloc_ResetPeak(void); |
| 69 | |
| 70 | #endif |
| 71 | |
| 72 | #endif /* !Py_TRACEMALLOC_H */ |
| 73 | |