core: sched_switch only switch for higher priority

sched_switch() is called by some library functions when a call unblocks
another thread. Then it needs to be tested if the current thread should
be preempted for the newly runnable thread.

A non-volutarily yield should only happen if the unblocked thread has a
_higher_ priority than the current thread. The current implementation,
which tests if the other thread has the same or a higher priority, does
not fit the documentation.
dev/timer
René Kijewski 9 years ago
parent dc20a6d142
commit 1df0b5644a

@ -158,7 +158,7 @@ void sched_switch(uint16_t other_prio)
DEBUG("%s: %" PRIu16 " %" PRIu16 " %i\n", sched_active_thread->name, current_prio, other_prio, in_isr);
if (current_prio >= other_prio) {
if (current_prio > other_prio) {
if (in_isr) {
sched_context_switch_request = 1;
}

Loading…
Cancel
Save