when the scheduler is suspended the FreeRTOS code in e.g.
vTaskResume places the task in the ready list, and if the taskYield is required
it (probably) relies on the vTaskSwitchContext that will just raise xMissedYield
flag for the scheduler when it resumes.
However xTaskResumFromISR uses a different approach and moves readied
task to a separate xPendingReadyList. I don’t quite understand why the same code as in vTaskResume is not used here?
IMHO it shouldn’t has problems with critical section (the comment in the vTaskResume code says : As we are in a critical section we can access the ready lists even if the scheduler is suspended.) since the xTaskResumFromISR is supposed to be called form an ISR with all apropriate context saved before?