summaryrefslogtreecommitdiffstats
path: root/Include/tracemalloc.h
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2018-10-25 13:54:13 (GMT)
committerGitHub <noreply@github.com>2018-10-25 13:54:13 (GMT)
commit6279c1c5003cd94b5e04e568ce3df7c4e8f1eaa3 (patch)
tree69ba9fb9c2291b19241c700a4466c136c5aeda5b /Include/tracemalloc.h
parent9e00e80e213ebc37eff89ce72102c1f928ebc133 (diff)
downloadcpython-6279c1c5003cd94b5e04e568ce3df7c4e8f1eaa3.zip
cpython-6279c1c5003cd94b5e04e568ce3df7c4e8f1eaa3.tar.gz
cpython-6279c1c5003cd94b5e04e568ce3df7c4e8f1eaa3.tar.bz2
bpo-35053: Add Include/tracemalloc.h (GH-10091)
* Modify object.h to ensure that pymem.h is included, to get _Py_tracemalloc_config variable. * Move _PyTraceMalloc_XXX() functions to tracemalloc.h, they need PyObject type. Break circular dependency between pymem.h and object.h.
Diffstat (limited to 'Include/tracemalloc.h')
-rw-r--r--Include/tracemalloc.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/Include/tracemalloc.h b/Include/tracemalloc.h
new file mode 100644
index 0000000..cf5bb54
--- /dev/null
+++ b/Include/tracemalloc.h
@@ -0,0 +1,42 @@
+#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);
+
+/* Update the Python traceback of an object.
+ This function can be used when a memory block is reused from a free list. */
+PyAPI_FUNC(int) _PyTraceMalloc_NewReference(PyObject *op);
+
+/* 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);
+#endif
+
+#endif /* !Py_TRACEMALLOC_H */