diff options
Diffstat (limited to 'include/test_util.h')
-rw-r--r-- | include/test_util.h | 14 |
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); |