- case portINTERRUPT_YIELD:\r
-\r
- lSwitchRequired = pdTRUE;\r
-\r
- /* Clear the interrupt pending bit. */\r
- ulPendingInterrupts &= ~( 1UL << portINTERRUPT_YIELD );\r
- break;\r
-\r
- case portINTERRUPT_TICK:\r
- \r
- /* Process the tick itself. */\r
- vTaskIncrementTick();\r
- #if( configUSE_PREEMPTION != 0 )\r
- {\r
- /* A context switch is only automatically \r
- performed from the tick interrupt if the \r
- pre-emptive scheduler is being used. */\r
- lSwitchRequired = pdTRUE;\r
- }\r
- #endif\r
- \r
- /* Clear the interrupt pending bit. */\r
- ulPendingInterrupts &= ~( 1UL << portINTERRUPT_TICK );\r
- SetEvent( pvTickAcknowledgeEvent );\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 \r
- event here for non-tick and none yield \r
- interrupts. */\r
- }\r
- break;\r
+ /* Run the actual handler. */\r
+ if( ulIsrHandler[ i ]() != pdFALSE )\r
+ {\r
+ ulSwitchRequired |= ( 1 << i );\r
+ }\r