57 #ifndef INC_FREERTOS_H 58 #error FreeRTOS.h must be included before list.h 92 #ifndef configLIST_VOLATILE 93 #define configLIST_VOLATILE 105 #if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 0 ) 107 #define listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE 108 #define listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE 109 #define listFIRST_LIST_INTEGRITY_CHECK_VALUE 110 #define listSECOND_LIST_INTEGRITY_CHECK_VALUE 111 #define listSET_FIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ) 112 #define listSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ) 113 #define listSET_LIST_INTEGRITY_CHECK_1_VALUE( pxList ) 114 #define listSET_LIST_INTEGRITY_CHECK_2_VALUE( pxList ) 115 #define listTEST_LIST_ITEM_INTEGRITY( pxItem ) 116 #define listTEST_LIST_INTEGRITY( pxList ) 119 #define listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE TickType_t xListItemIntegrityValue1; 120 #define listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE TickType_t xListItemIntegrityValue2; 121 #define listFIRST_LIST_INTEGRITY_CHECK_VALUE TickType_t xListIntegrityValue1; 122 #define listSECOND_LIST_INTEGRITY_CHECK_VALUE TickType_t xListIntegrityValue2; 125 #define listSET_FIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ) ( pxItem )->xListItemIntegrityValue1 = pdINTEGRITY_CHECK_VALUE 126 #define listSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ) ( pxItem )->xListItemIntegrityValue2 = pdINTEGRITY_CHECK_VALUE 127 #define listSET_LIST_INTEGRITY_CHECK_1_VALUE( pxList ) ( pxList )->xListIntegrityValue1 = pdINTEGRITY_CHECK_VALUE 128 #define listSET_LIST_INTEGRITY_CHECK_2_VALUE( pxList ) ( pxList )->xListIntegrityValue2 = pdINTEGRITY_CHECK_VALUE 132 #define listTEST_LIST_ITEM_INTEGRITY( pxItem ) configASSERT( ( ( pxItem )->xListItemIntegrityValue1 == pdINTEGRITY_CHECK_VALUE ) && ( ( pxItem )->xListItemIntegrityValue2 == pdINTEGRITY_CHECK_VALUE ) ) 133 #define listTEST_LIST_INTEGRITY( pxList ) configASSERT( ( ( pxList )->xListIntegrityValue1 == pdINTEGRITY_CHECK_VALUE ) && ( ( pxList )->xListIntegrityValue2 == pdINTEGRITY_CHECK_VALUE ) ) 180 #define listSET_LIST_ITEM_OWNER( pxListItem, pxOwner ) ( ( pxListItem )->pvOwner = ( void * ) ( pxOwner ) ) 189 #define listGET_LIST_ITEM_OWNER( pxListItem ) ( ( pxListItem )->pvOwner ) 198 #define listSET_LIST_ITEM_VALUE( pxListItem, xValue ) ( ( pxListItem )->xItemValue = ( xValue ) ) 208 #define listGET_LIST_ITEM_VALUE( pxListItem ) ( ( pxListItem )->xItemValue ) 217 #define listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxList ) ( ( ( pxList )->xListEnd ).pxNext->xItemValue ) 225 #define listGET_HEAD_ENTRY( pxList ) ( ( ( pxList )->xListEnd ).pxNext ) 233 #define listGET_NEXT( pxListItem ) ( ( pxListItem )->pxNext ) 241 #define listGET_END_MARKER( pxList ) ( ( ListItem_t const * ) ( &( ( pxList )->xListEnd ) ) ) 250 #define listLIST_IS_EMPTY( pxList ) ( ( BaseType_t ) ( ( pxList )->uxNumberOfItems == ( UBaseType_t ) 0 ) ) 255 #define listCURRENT_LIST_LENGTH( pxList ) ( ( pxList )->uxNumberOfItems ) 277 #define listGET_OWNER_OF_NEXT_ENTRY( pxTCB, pxList ) \ 279 List_t * const pxConstList = ( pxList ); \ 282 ( pxConstList )->pxIndex = ( pxConstList )->pxIndex->pxNext; \ 283 if( ( void * ) ( pxConstList )->pxIndex == ( void * ) &( ( pxConstList )->xListEnd ) ) \ 285 ( pxConstList )->pxIndex = ( pxConstList )->pxIndex->pxNext; \ 287 ( pxTCB ) = ( pxConstList )->pxIndex->pvOwner; \ 307 #define listGET_OWNER_OF_HEAD_ENTRY( pxList ) ( (&( ( pxList )->xListEnd ))->pxNext->pvOwner ) 318 #define listIS_CONTAINED_WITHIN( pxList, pxListItem ) ( ( BaseType_t ) ( ( pxListItem )->pvContainer == ( void * ) ( pxList ) ) ) 326 #define listLIST_ITEM_CONTAINER( pxListItem ) ( ( pxListItem )->pvContainer ) 333 #define listLIST_IS_INITIALISED( pxList ) ( ( pxList )->xListEnd.xItemValue == portMAX_DELAY ) listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE configLIST_VOLATILE TickType_t xItemValue
#define listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE
listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE configLIST_VOLATILE TickType_t xItemValue
struct xLIST_ITEM *configLIST_VOLATILE pxNext
void *configLIST_VOLATILE pvContainer
UBaseType_t uxListRemove(ListItem_t *const pxItemToRemove) PRIVILEGED_FUNCTION
ListItem_t *configLIST_VOLATILE pxIndex
void vListInsertEnd(List_t *const pxList, ListItem_t *const pxNewListItem) PRIVILEGED_FUNCTION
struct xLIST_ITEM *configLIST_VOLATILE pxNext
unsigned long UBaseType_t
#define configLIST_VOLATILE
struct xLIST_ITEM *configLIST_VOLATILE pxPrevious
struct xLIST_ITEM *configLIST_VOLATILE pxPrevious
void vListInsert(List_t *const pxList, ListItem_t *const pxNewListItem) PRIVILEGED_FUNCTION
#define listFIRST_LIST_INTEGRITY_CHECK_VALUE
#define listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE
#define PRIVILEGED_FUNCTION
#define listSECOND_LIST_INTEGRITY_CHECK_VALUE
void vListInitialise(List_t *const pxList) PRIVILEGED_FUNCTION
void vListInitialiseItem(ListItem_t *const pxItem) PRIVILEGED_FUNCTION
listFIRST_LIST_INTEGRITY_CHECK_VALUE volatile UBaseType_t uxNumberOfItems