From 657d427aa41e6e05c8c4d4b1179b42d3363e8018 Mon Sep 17 00:00:00 2001 From: Vegard Storheil Eriksen Date: Sun, 7 Jul 2013 21:44:10 +0200 Subject: Use intrusive list to keep track of ready threads. --- interrupt/fault.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'interrupt') diff --git a/interrupt/fault.cpp b/interrupt/fault.cpp index 016b74b..9af0eb8 100644 --- a/interrupt/fault.cpp +++ b/interrupt/fault.cpp @@ -12,7 +12,11 @@ inline void __attribute__((naked)) switch_context() { asm volatile ("str sp, [%0]" :: "r" (&Thread::active_thread->sp)); // Update running thread. - Thread::active_thread = Thread::active_thread->next; + if(!Thread::reschedule()) { + // TODO: Set SLEEPONEXIT + } else { + // TODO: Clear SLEEPONEXIT + } // Fetch stack pointer for new thread. asm volatile ("ldr sp, [%0]" :: "r" (&Thread::active_thread->sp)); -- cgit v1.2.3