mirror of https://github.com/Desuuuu/klipper.git
sched: Pass shutdown reason code via longjmp() parameter
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
cf662b842b
commit
09140a51d5
|
@ -102,11 +102,13 @@ ctr_lookup_output(const char *str)
|
|||
return fmt % ("".join(encoder_defs).strip(), "".join(encoder_code).strip(),
|
||||
"".join(output_code).strip())
|
||||
|
||||
STATIC_STRING_MIN = 2
|
||||
|
||||
def build_static_strings(static_strings):
|
||||
code = []
|
||||
for i, s in enumerate(static_strings):
|
||||
code.append(' if (__builtin_strcmp(str, "%s") == 0)\n'
|
||||
' return %d;\n' % (s, i))
|
||||
' return %d;\n' % (s, i + STATIC_STRING_MIN))
|
||||
fmt = """
|
||||
uint8_t __always_inline
|
||||
ctr_lookup_static_string(const char *str)
|
||||
|
@ -187,7 +189,7 @@ def build_identify(cmd_by_id, msg_to_id, responses, static_strings
|
|||
data['messages'] = messages
|
||||
data['commands'] = sorted(cmd_by_id.keys())
|
||||
data['responses'] = sorted(responses)
|
||||
data['static_strings'] = { i: static_strings[i]
|
||||
data['static_strings'] = { i + STATIC_STRING_MIN: static_strings[i]
|
||||
for i in range(len(static_strings)) }
|
||||
data['config'] = constants
|
||||
data['version'] = version
|
||||
|
|
10
src/sched.c
10
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();
|
||||
|
|
Loading…
Reference in New Issue