PendSV
Ett undantag i Cortex-M som finns till för att skjutas upp — och därför är platsen där nästan varje RTOS byter uppgift.
PendSV, Pendable Service Call, är undantag nummer 14 i Cortex-M-arkitekturen. Det triggas inte av någon kringenhet utan av mjukvaran själv, genom att en bit sätts i registret ICSR. Tricket är att det får den lägsta prioriteten i systemet: det körs först när alla andra avbrott är klara.
Det är exakt vad ett RTOS behöver. SysTick-avbrottet bestämmer att en annan uppgift ska köra, men att byta stack mitt i en kedja av nästlade avbrott vore att be om problem. I stället markerar det PendSV som väntande, och själva kontextbytet sker när hårdvaran ändå är på väg tillbaka till trådläge. FreeRTOS, Zephyr och de flesta andra kärnor för Cortex-M gör så. Syskonet SVC är däremot synkront och används för systemanrop.