diff options
Diffstat (limited to 'src/sched.c')
-rw-r--r-- | src/sched.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/sched.c b/src/sched.c index 542e3747..8fee61f2 100644 --- a/src/sched.c +++ b/src/sched.c @@ -205,9 +205,11 @@ sched_clear_shutdown(void) // Invoke all shutdown functions (as declared by DECL_SHUTDOWN) static void -run_shutdown(void) +run_shutdown(int reason) { uint32_t cur = timer_read_time(); + if (!shutdown_status) + shutdown_reason = reason; shutdown_status = 2; extern void ctr_run_shutdownfuncs(void); ctr_run_shutdownfuncs(); @@ -239,9 +241,7 @@ void sched_shutdown(uint_fast8_t reason) { irq_disable(); - if (!shutdown_status) - shutdown_reason = reason; - longjmp(shutdown_jmp, 1); + longjmp(shutdown_jmp, reason); } @@ -261,7 +261,7 @@ sched_main(void) int ret = setjmp(shutdown_jmp); if (ret) - run_shutdown(); + run_shutdown(ret); for (;;) ctr_run_taskfuncs(); |