From 09140a51d560372bb7e77297f7a2807e717167a0 Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Sun, 2 Jul 2017 14:29:16 -0400 Subject: sched: Pass shutdown reason code via longjmp() parameter Signed-off-by: Kevin O'Connor --- src/sched.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/sched.c') 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(); -- cgit v1.2.3-70-g09d2