summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/thread.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/firmware/thread.c b/firmware/thread.c
index ca6c640..fdef2cd 100644
--- a/firmware/thread.c
+++ b/firmware/thread.c
@@ -1615,12 +1615,13 @@ void switch_thread(struct thread_entry *old)
* got CPU time. */
for (;;)
{
- int priority = MIN(thread->priority, thread->priority_x);
+ int priority = thread->priority;
if (priority < cores[core].highest_priority)
cores[core].highest_priority = priority;
if (priority == cores[core].highest_priority ||
+ thread->priority_x < cores[core].highest_priority ||
(current_tick - thread->last_run > priority * 8))
{
cores[core].running = thread;
@@ -2402,7 +2403,6 @@ void priority_yield(void)
thread->priority_x = HIGHEST_PRIORITY;
switch_thread(NULL);
thread->priority_x = LOWEST_PRIORITY;
- cores[core].highest_priority = LOWEST_PRIORITY;
}
#endif /* HAVE_PRIORITY_SCHEDULING */