summaryrefslogtreecommitdiff
path: root/include/test_util.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/test_util.h')
-rw-r--r--include/test_util.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/include/test_util.h b/include/test_util.h
index 182ad9d233..754230489f 100644
--- a/include/test_util.h
+++ b/include/test_util.h
@@ -27,6 +27,7 @@
do { \
if (!(n)) { \
ccprintf("%d: ASSERTION failed: %s\n", __LINE__, #n); \
+ task_dump_trace(); \
return EC_ERROR_UNKNOWN; \
} \
} while (0)
@@ -38,6 +39,7 @@
if (__ABS(n) >= t) { \
ccprintf("%d: ASSERT_ABS_LESS failed: abs(%d) is " \
"not less than %d\n", __LINE__, n, t); \
+ task_dump_trace(); \
return EC_ERROR_UNKNOWN; \
} \
} while (0)
@@ -50,6 +52,7 @@
ccprintf("%d: ASSERT_ARRAY_EQ failed at " \
"index=%d: %d != %d\n", __LINE__, \
__i, (int)(s)[__i], (int)(d)[__i]); \
+ task_dump_trace(); \
return EC_ERROR_UNKNOWN; \
} \
} while (0)
@@ -127,8 +130,19 @@ void interrupt_generator_udelay(unsigned us);
#ifdef EMU_BUILD
void wait_for_task_started(void);
+
+/*
+ * Register trace dump handler for emulator. Trace dump is printed to stderr
+ * when SIGUSR2 is received.
+ */
+void task_register_tracedump(void);
+
+/* Dump current stack trace */
+void task_dump_trace(void);
#else
static inline void wait_for_task_started(void) { }
+static inline void task_register_tracedump(void) { }
+static inline void task_dump_trace(void) { }
#endif
uint32_t prng(uint32_t seed);