summaryrefslogtreecommitdiffstatshomepage
path: root/py/modmicropython.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2014-03-25 14:18:18 +0000
committerDamien George <damien.p.george@gmail.com>2014-03-25 14:18:18 +0000
commitcaac542b235003f7b79d7aa23eaebe8f2c772508 (patch)
treef70b42312f091b10c9e3d871fe1a70d573e7cba4 /py/modmicropython.c
parent1dfde891e3e26543da6d42215da6a23c32b0a8bc (diff)
downloadmicropython-caac542b235003f7b79d7aa23eaebe8f2c772508.tar.gz
micropython-caac542b235003f7b79d7aa23eaebe8f2c772508.zip
Proper support for registering builtin modules in ROM.
Comes with some refactoring of code and renaming of files. All modules are now named mod*.[ch].
Diffstat (limited to 'py/modmicropython.c')
-rw-r--r--py/modmicropython.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/py/modmicropython.c b/py/modmicropython.c
new file mode 100644
index 0000000000..96ceb811c9
--- /dev/null
+++ b/py/modmicropython.c
@@ -0,0 +1,50 @@
+#include "misc.h"
+#include "mpconfig.h"
+#include "qstr.h"
+#include "obj.h"
+#include "map.h"
+#include "builtin.h"
+
+// Various builtins specific to MicroPython runtime,
+// living in micropython module
+
+#if MICROPY_MEM_STATS
+STATIC mp_obj_t mp_micropython_mem_total() {
+ return MP_OBJ_NEW_SMALL_INT((machine_int_t)m_get_total_bytes_allocated());
+}
+
+STATIC mp_obj_t mp_micropython_mem_current() {
+ return MP_OBJ_NEW_SMALL_INT((machine_int_t)m_get_current_bytes_allocated());
+}
+
+STATIC mp_obj_t mp_micropython_mem_peak() {
+ return MP_OBJ_NEW_SMALL_INT((machine_int_t)m_get_peak_bytes_allocated());
+}
+
+STATIC MP_DEFINE_CONST_FUN_OBJ_0(mp_micropython_mem_total_obj, mp_micropython_mem_total);
+STATIC MP_DEFINE_CONST_FUN_OBJ_0(mp_micropython_mem_current_obj, mp_micropython_mem_current);
+STATIC MP_DEFINE_CONST_FUN_OBJ_0(mp_micropython_mem_peak_obj, mp_micropython_mem_peak);
+#endif
+
+STATIC const mp_map_elem_t mp_module_micropython_globals_table[] = {
+ { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_micropython) },
+#if MICROPY_MEM_STATS
+ { MP_OBJ_NEW_QSTR(MP_QSTR_mem_total), (mp_obj_t)&mp_micropython_mem_total_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_mem_current), (mp_obj_t)&mp_micropython_mem_current_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_mem_peak), (mp_obj_t)&mp_micropython_mem_peak_obj },
+#endif
+};
+
+STATIC const mp_map_t mp_module_micropython_globals = {
+ .all_keys_are_qstrs = 1,
+ .table_is_fixed_array = 1,
+ .used = sizeof(mp_module_micropython_globals_table) / sizeof(mp_map_elem_t),
+ .alloc = sizeof(mp_module_micropython_globals_table) / sizeof(mp_map_elem_t),
+ .table = (mp_map_elem_t*)mp_module_micropython_globals_table,
+};
+
+const mp_obj_module_t mp_module_micropython = {
+ .base = { &mp_type_module },
+ .name = MP_QSTR_micropython,
+ .globals = (mp_map_t*)&mp_module_micropython_globals,
+};