mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
1d99f4f758
Using `sched_switch()` in `mutex_unlock()` can result in crashes when `mutex_unlock()` is called from IRQ context. This however is a common pattern in RIOT to wake up a thread from IRQ. The reason for the crash is that `sched_switch()` assumes `thread_get_active()` to always return a non-`NULL` value. But when thread-less idle is used, no thread may be active after the last runnable thread exited. Using `thread_yield_higher()` instead solves the issue, as `thread_yield_higher()` is safe to call from IRQ context without an active thread. This fixes https://github.com/RIOT-OS/RIOT/issues/20812 |
||
---|---|---|
.. | ||
include | ||
lib | ||
cond.c | ||
doc.txt | ||
Kconfig | ||
Makefile | ||
mbox.c | ||
msg_bus.c | ||
msg.c | ||
mutex.c | ||
sched.c | ||
thread_flags.c | ||
thread.c |