Co-routines are only intended for use on very small processors that have severe RAM constraints, and would not
normally be used on 32-bit microcontrollers.
A co-routine can exist in one of the following states:
There is currently no co-routine equivalent to a tasks Suspended state.
When a co-routine is actually executing it is said to be in the Running state. It is currently utilising the processor.
Ready co-routines are those that are able to execute (they are not blocked) but are not currently executing. A co-routine may be in the Ready state because:
- Another co-routine of equal or higher priority is already in the Running state, or
- A task is in the Running state - this can only be the case if the application uses both tasks and co-routines.
A co-routine is said to be in the Blocked state if it is currently waiting for either a temporal or external event.
For example, if a co-routine calls crDELAY() it will block (be placed into the Blocked state) until the delay period has expired - a temporal event.
Blocked co-routines are not available for scheduling.
Valid co-routine state transitions
Copyright (C) 2004-2010 Richard Barry. Copyright (C) 2010-2015 Real Time Engineers Ltd.
Any and all data, files, source code, html content and documentation included in the FreeRTOSTM distribution or available on this site are the exclusive property of Real Time Engineers Ltd..
See the files license.txt (included in the distribution) and this copyright notice for more information. FreeRTOSTM and FreeRTOS.orgTM are trade marks of Real Time Engineers Ltd.