- case portINTERRUPT_YIELD:\r
-\r
- vPortTrace( "prvProcessEvents: Processing Yield\r\n" );\r
- /* Yield interrupts occur no matter what the critical nesting count. */\r
- lSwitchRequired = pdTRUE;\r
-\r
- /* Clear the interrupt pending bit. */\r
- ulPendingInterrupts &= ~( 1UL << portINTERRUPT_YIELD );\r
- break;\r
-\r
- case portINTERRUPT_TICK:\r
- \r
- /* Tick interrupts should only be processed if the critical nesting count\r
- is zero. The critical nesting count represents the interrupt mask on \r
- real target hardware. */\r
- vPortTrace( "prvProcessEvents: Processing tick event\r\n" );\r
- if( ulCriticalNesting == 0 )\r
- {\r
- /* Process the tick itself. */\r
- vPortTrace( "prvProcessEvents: Incrementing tick\r\n" );\r
- vTaskIncrementTick();\r
- #if( configUSE_PREEMPTION != 0 )\r
- {\r
- /* A context switch is only automatically performed from the tick\r
- interrupt if the pre-emptive scheduler is being used. */\r
- lSwitchRequired = pdTRUE;\r
- }\r
- #endif\r
- \r
- vPortTrace( "prvProcessEvents: Acking tick\r\n" );\r
- SetEvent( pvTickAcknowledgeEvent );\r
-\r
- /* Clear the interrupt pending bit. */\r
- ulPendingInterrupts &= ~( 1UL << portINTERRUPT_TICK );\r
- }\r
- break;\r
-\r
- default:\r
-\r
- /* Is a handler installed? */\r
- if( vIsrHandler[ i ] != NULL )\r
- {\r
- lSwitchRequired = pdTRUE;\r
-\r
- /* Run the actual handler. */\r
- vIsrHandler[ i ]();\r
-\r
- /* Clear the interrupt pending bit. */\r
- ulPendingInterrupts &= ~( 1UL << i );\r
-\r
- /* TODO: Need to have some sort of handshake event here for non-tick\r
- and none yield interrupts. */\r
- }\r
- break;\r