summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-06-24 21:23:40 +0300
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-06-25 14:28:11 +0300
commit5aa740c3e210e4f2f641db0bb2bef49eda31228f (patch)
tree4191befa20e8a7432bd64853318b3399759ea0f8
parente973acde81462de0c205f27db2642a08022fb3a8 (diff)
downloadmicropython-5aa740c3e210e4f2f641db0bb2bef49eda31228f.tar.gz
micropython-5aa740c3e210e4f2f641db0bb2bef49eda31228f.zip
modgc: Add mem_free()/mem_alloc() methods.
Return free/allocated memory on GC heap.
-rw-r--r--py/modgc.c16
-rw-r--r--py/qstrdefs.h2
2 files changed, 18 insertions, 0 deletions
diff --git a/py/modgc.c b/py/modgc.c
index f136ce733d..4ffdc2be68 100644
--- a/py/modgc.c
+++ b/py/modgc.c
@@ -61,11 +61,27 @@ STATIC mp_obj_t gc_enable(void) {
}
MP_DEFINE_CONST_FUN_OBJ_0(gc_enable_obj, gc_enable);
+STATIC mp_obj_t gc_mem_free(void) {
+ gc_info_t info;
+ gc_info(&info);
+ return MP_OBJ_NEW_SMALL_INT((machine_uint_t)info.free);
+}
+MP_DEFINE_CONST_FUN_OBJ_0(gc_mem_free_obj, gc_mem_free);
+
+STATIC mp_obj_t gc_mem_alloc(void) {
+ gc_info_t info;
+ gc_info(&info);
+ return MP_OBJ_NEW_SMALL_INT((machine_uint_t)info.used);
+}
+MP_DEFINE_CONST_FUN_OBJ_0(gc_mem_alloc_obj, gc_mem_alloc);
+
STATIC const mp_map_elem_t mp_module_gc_globals_table[] = {
{ MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_gc) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_collect), (mp_obj_t)&gc_collect_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_disable), (mp_obj_t)&gc_disable_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_enable), (mp_obj_t)&gc_enable_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_mem_free), (mp_obj_t)&gc_mem_free_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_mem_alloc), (mp_obj_t)&gc_mem_alloc_obj },
};
STATIC const mp_obj_dict_t mp_module_gc_globals = {
diff --git a/py/qstrdefs.h b/py/qstrdefs.h
index 856853fa55..4ff9ca87c8 100644
--- a/py/qstrdefs.h
+++ b/py/qstrdefs.h
@@ -377,6 +377,8 @@ Q(gc)
Q(collect)
Q(disable)
Q(enable)
+Q(mem_free)
+Q(mem_alloc)
#endif
#if MICROPY_PY_BUILTINS_PROPERTY