summaryrefslogtreecommitdiffstatshomepage
path: root/unix
diff options
context:
space:
mode:
authorDave Hylands <dhylands@gmail.com>2014-07-01 23:46:53 -0700
committerDave Hylands <dhylands@gmail.com>2014-07-25 14:00:06 -0700
commit5b7fd20fea6d4329bb3ab45f63df41f46f242688 (patch)
tree10f806ab0d883bc6c087cc22b55b787adbdcf815 /unix
parent05c255f039b5c0fbdcb0754748fd5d36135acfd9 (diff)
downloadmicropython-5b7fd20fea6d4329bb3ab45f63df41f46f242688.tar.gz
micropython-5b7fd20fea6d4329bb3ab45f63df41f46f242688.zip
Add support for storing args during an exception raised by an irq.
The user code should call micropython.alloc_emergency_exception_buf(size) where size is the size of the buffer used to print the argument passed to the exception. With the test code from #732, and a call to micropython.alloc_emergenncy_exception_buf(100) the following error is now printed: ```python >>> import heartbeat_irq Uncaught exception in Timer(4) interrupt handler Traceback (most recent call last): File "0://heartbeat_irq.py", line 14, in heartbeat_cb NameError: name 'led' is not defined ```
Diffstat (limited to 'unix')
-rw-r--r--unix/main.c3
-rw-r--r--unix/mpconfigport.h3
2 files changed, 6 insertions, 0 deletions
diff --git a/unix/main.c b/unix/main.c
index d0222de0d1..45ccc23c20 100644
--- a/unix/main.c
+++ b/unix/main.c
@@ -273,6 +273,9 @@ int main(int argc, char **argv) {
char *heap = malloc(heap_size);
gc_init(heap, heap + heap_size);
#endif
+#if MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF
+ mp_init_emergency_exception_buf();
+#endif
qstr_init();
mp_init();
diff --git a/unix/mpconfigport.h b/unix/mpconfigport.h
index ce4365d365..ff30eec340 100644
--- a/unix/mpconfigport.h
+++ b/unix/mpconfigport.h
@@ -64,6 +64,9 @@
#define MICROPY_GCREGS_SETJMP (0)
#endif
+#define MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF (1)
+#define MICROPY_EMERGENCY_EXCEPTION_BUF_SIZE (128)
+
extern const struct _mp_obj_module_t mp_module_os;
extern const struct _mp_obj_module_t mp_module_time;
extern const struct _mp_obj_module_t mp_module_socket;