summaryrefslogtreecommitdiffstatshomepage
path: root/py/modmicropython.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2015-01-09 20:12:54 +0000
committerDamien George <damien.p.george@gmail.com>2015-01-09 20:12:54 +0000
commit89deec0bab0c6d960e75fcda1c9cc767b8a49661 (patch)
tree9feabca102666f86b614d924eafe0bd272165efe /py/modmicropython.c
parent4a5895c4eba98f9c5e698d48f58cbf3682ed0db1 (diff)
downloadmicropython-89deec0bab0c6d960e75fcda1c9cc767b8a49661.tar.gz
micropython-89deec0bab0c6d960e75fcda1c9cc767b8a49661.zip
py: Add MICROPY_PY_MICROPYTHON_MEM_INFO to enable mem-info funcs.
This allows to enable mem-info functions in micropython module, even if MICROPY_MEM_STATS is not enabled. In this case, you get mem_info and qstr_info but not mem_{total,current,peak}.
Diffstat (limited to 'py/modmicropython.c')
-rw-r--r--py/modmicropython.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/py/modmicropython.c b/py/modmicropython.c
index 035956ffcc..52b1cd0e5e 100644
--- a/py/modmicropython.c
+++ b/py/modmicropython.c
@@ -26,6 +26,7 @@
#include <stdio.h>
+#include "py/mpstate.h"
#include "py/builtin.h"
#include "py/stackctrl.h"
#include "py/gc.h"
@@ -33,6 +34,8 @@
// Various builtins specific to MicroPython runtime,
// living in micropython module
+#if MICROPY_PY_MICROPYTHON_MEM_INFO
+
#if MICROPY_MEM_STATS
STATIC mp_obj_t mp_micropython_mem_total() {
return MP_OBJ_NEW_SMALL_INT(m_get_total_bytes_allocated());
@@ -48,11 +51,18 @@ STATIC mp_obj_t mp_micropython_mem_peak() {
return MP_OBJ_NEW_SMALL_INT(m_get_peak_bytes_allocated());
}
STATIC MP_DEFINE_CONST_FUN_OBJ_0(mp_micropython_mem_peak_obj, mp_micropython_mem_peak);
+#endif
mp_obj_t mp_micropython_mem_info(mp_uint_t n_args, const mp_obj_t *args) {
+#if MICROPY_MEM_STATS
printf("mem: total=" UINT_FMT ", current=" UINT_FMT ", peak=" UINT_FMT "\n",
m_get_total_bytes_allocated(), m_get_current_bytes_allocated(), m_get_peak_bytes_allocated());
+#endif
+#if MICROPY_STACK_CHECK
+ printf("stack: " UINT_FMT " out of " INT_FMT "\n", mp_stack_usage(), MP_STATE_VM(stack_limit) - mp_stack_usage());
+#else
printf("stack: " UINT_FMT "\n", mp_stack_usage());
+#endif
#if MICROPY_ENABLE_GC
gc_dump_info();
if (n_args == 1) {
@@ -72,7 +82,8 @@ STATIC mp_obj_t qstr_info(void) {
return mp_const_none;
}
STATIC MP_DEFINE_CONST_FUN_OBJ_0(mp_micropython_qstr_info_obj, qstr_info);
-#endif
+
+#endif // MICROPY_PY_MICROPYTHON_MEM_INFO
#if MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF && (MICROPY_EMERGENCY_EXCEPTION_BUF_SIZE == 0)
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_alloc_emergency_exception_buf_obj, mp_alloc_emergency_exception_buf);
@@ -80,10 +91,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_alloc_emergency_exception_buf_obj, mp_alloc_
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_PY_MICROPYTHON_MEM_INFO
#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
{ MP_OBJ_NEW_QSTR(MP_QSTR_mem_info), (mp_obj_t)&mp_micropython_mem_info_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_qstr_info), (mp_obj_t)&mp_micropython_qstr_info_obj },
#endif