summaryrefslogtreecommitdiffstatshomepage
path: root/py/mpconfig.h
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 /py/mpconfig.h
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 'py/mpconfig.h')
-rw-r--r--py/mpconfig.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/py/mpconfig.h b/py/mpconfig.h
index 99d697f9ad..911125c8a4 100644
--- a/py/mpconfig.h
+++ b/py/mpconfig.h
@@ -163,6 +163,16 @@
#define MICROPY_STACK_CHECK (1)
#endif
+// Whether to have an emergency exception buffer
+#ifndef MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF
+#define MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF (0)
+#endif
+#if MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF
+# ifndef MICROPY_EMERGENCY_EXCEPTION_BUF_SIZE
+# define MICROPY_EMERGENCY_EXCEPTION_BUF_SIZE (0) // 0 - implies dynamic allocation
+# endif
+#endif
+
// Whether to include REPL helper function
#ifndef MICROPY_HELPER_REPL
#define MICROPY_HELPER_REPL (0)
@@ -378,6 +388,14 @@ typedef double mp_float_t;
/*****************************************************************************/
/* Miscellaneous settings */
+// On embedded platforms, these will typically enable/disable irqs.
+#ifndef MICROPY_BEGIN_ATOMIC_SECTION
+#define MICROPY_BEGIN_ATOMIC_SECTION()
+#endif
+#ifndef MICROPY_END_ATOMIC_SECTION
+#define MICROPY_END_ATOMIC_SECTION()
+#endif
+
// Allow to override static modifier for global objects, e.g. to use with
// object code analysis tools which don't support static symbols.
#ifndef STATIC