aboutsummaryrefslogtreecommitdiff
path: root/py/gc.h
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2018-05-31 23:10:48 +1000
committerDamien George <damien.p.george@gmail.com>2018-06-12 11:55:29 +1000
commit522ea80f06a80fd799bd57de351373ceaeeae325 (patch)
treea0759e8d15d1643cc930c523b5fb4b5aeed7aad7 /py/gc.h
parent8fb95d652066b38e0dbb4fa5433de49eb601bdfe (diff)
py/gc: Add gc_sweep_all() function to run all remaining finalisers.
This patch adds the gc_sweep_all() function which does a garbage collection without tracing any root pointers, so frees all the memory, and most importantly runs any remaining finalisers. This helps primarily for soft reset: it will close any open files, any open sockets, and help to get the system back to a clean state upon soft reset.
Diffstat (limited to 'py/gc.h')
-rw-r--r--py/gc.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/py/gc.h b/py/gc.h
index 739349c1f..73d86e6c3 100644
--- a/py/gc.h
+++ b/py/gc.h
@@ -45,6 +45,9 @@ void gc_collect_start(void);
void gc_collect_root(void **ptrs, size_t len);
void gc_collect_end(void);
+// Use this function to sweep the whole heap and run all finalisers
+void gc_sweep_all(void);
+
void *gc_alloc(size_t n_bytes, bool has_finaliser);
void gc_free(void *ptr); // does not call finaliser
size_t gc_nbytes(const void *ptr);