Context switch from co-routine

Hi all.
static void __interrupt __far vExampleInterruptHandler( void )
{
...
   crQUEUE_RECEIVE_FROM_ISR( xIntegerQueue,
                    &ulReceivedNumber,
                    &pxCoRoutineWoken  );
   
   if( pxCoRoutineWoken == pdTRUE )
   {
       // HOW CAN I "MANUALLY" SWITCH TO OTHER CO-ROUTINE WITH HIGHER PRIORITY ?????
   }
}
Can I use vCoRoutineSchedule() API function??? Thanks.

Context switch from co-routine

Note that co-routines do not support preemption, so the interrupt can’t change which co-routine is running.

Context switch from co-routine

To richard_damon: But I can change current coroutine to other by call crDELAY(xHandle, 0);
It will be correct, if I could do the same from ISR… How to use parameter pxCoRoutineWoken in crQUEUE_RECEIVE_FROM_ISR() API function?
What for is this parameter? Thanks.

Context switch from co-routine

Since Co-Routines do not support pre-emption, the switch between co-routines occurs when the co-routine calls an API function. They don’t save enough state to allow a co-routine to be interrupted at another point and the flow of execution changed (to another co-routine). In effect, all the co-routines in a program fall within a single task, and that task can be pre-empted, so another task can run. This is what the Woken flag controls, should the “co-routine” task be woken by the interrupt.