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>
This commit is contained in:
Peter Harper
2025-11-05 10:19:27 +00:00
committed by Damien George
parent 094437686f
commit 4e79698a99

View File

@@ -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
}