17db96d56Sopenharmony_ci#ifndef Py_TRACEMALLOC_H 27db96d56Sopenharmony_ci#define Py_TRACEMALLOC_H 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ci#ifndef Py_LIMITED_API 57db96d56Sopenharmony_ci/* Track an allocated memory block in the tracemalloc module. 67db96d56Sopenharmony_ci Return 0 on success, return -1 on error (failed to allocate memory to store 77db96d56Sopenharmony_ci the trace). 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_ci Return -2 if tracemalloc is disabled. 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ci If memory block is already tracked, update the existing trace. */ 127db96d56Sopenharmony_ciPyAPI_FUNC(int) PyTraceMalloc_Track( 137db96d56Sopenharmony_ci unsigned int domain, 147db96d56Sopenharmony_ci uintptr_t ptr, 157db96d56Sopenharmony_ci size_t size); 167db96d56Sopenharmony_ci 177db96d56Sopenharmony_ci/* Untrack an allocated memory block in the tracemalloc module. 187db96d56Sopenharmony_ci Do nothing if the block was not tracked. 197db96d56Sopenharmony_ci 207db96d56Sopenharmony_ci Return -2 if tracemalloc is disabled, otherwise return 0. */ 217db96d56Sopenharmony_ciPyAPI_FUNC(int) PyTraceMalloc_Untrack( 227db96d56Sopenharmony_ci unsigned int domain, 237db96d56Sopenharmony_ci uintptr_t ptr); 247db96d56Sopenharmony_ci 257db96d56Sopenharmony_ci/* Get the traceback where a memory block was allocated. 267db96d56Sopenharmony_ci 277db96d56Sopenharmony_ci Return a tuple of (filename: str, lineno: int) tuples. 287db96d56Sopenharmony_ci 297db96d56Sopenharmony_ci Return None if the tracemalloc module is disabled or if the memory block 307db96d56Sopenharmony_ci is not tracked by tracemalloc. 317db96d56Sopenharmony_ci 327db96d56Sopenharmony_ci Raise an exception and return NULL on error. */ 337db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) _PyTraceMalloc_GetTraceback( 347db96d56Sopenharmony_ci unsigned int domain, 357db96d56Sopenharmony_ci uintptr_t ptr); 367db96d56Sopenharmony_ci#endif 377db96d56Sopenharmony_ci 387db96d56Sopenharmony_ci#endif /* !Py_TRACEMALLOC_H */ 39