diff options
| author | Peter Harper <peter.harper@raspberrypi.com> | 2025-11-05 10:19:27 +0000 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2025-11-19 16:35:10 +1100 |
| commit | 4e79698a997465b1043fa8cbc4a72cdac889341f (patch) | |
| tree | e990990d01be15930851f56b9795d4d09fdcb5c7 | |
| parent | 094437686fc53727318eea82e5609106c26e882a (diff) | |
rp2/pendsv: Fix PendSV_Handler dispatch check when threading enabled.
If MICROPY_PY_THREAD is set, PendSV_Handler acquires a mutex and calls the
dispatch functions. If pendsv_schedule_dispatch is called by a higher
priority interrupt while the mutex is acquired by PendSV_Handler it's
possible for the dispatch to not be triggered.
Add a check for dispatch calls at the end of PendSV_Handler once the mutex
has been released.
Fixes issue #18365.
Signed-off-by: Peter Harper <peter.harper@raspberrypi.com>
| -rw-r--r-- | ports/rp2/pendsv.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/ports/rp2/pendsv.c b/ports/rp2/pendsv.c index 05b521fde..a3a855b8d 100644 --- a/ports/rp2/pendsv.c +++ b/ports/rp2/pendsv.c @@ -180,5 +180,7 @@ void PendSV_Handler(void) { #if MICROPY_PY_THREAD mp_thread_recursive_mutex_unlock(&pendsv_mutex); + // Check if a dispatch occurred while the interrupt was being serviced + pendsv_resume_run_dispatch(); #endif } |
