62 #error "FreeRTOS.h must be included before list.h"
93#ifndef configLIST_VOLATILE
94 #define configLIST_VOLATILE
108#if ( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 0 )
110 #define listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE
111 #define listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE
112 #define listFIRST_LIST_INTEGRITY_CHECK_VALUE
113 #define listSECOND_LIST_INTEGRITY_CHECK_VALUE
114 #define listSET_FIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem )
115 #define listSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem )
116 #define listSET_LIST_INTEGRITY_CHECK_1_VALUE( pxList )
117 #define listSET_LIST_INTEGRITY_CHECK_2_VALUE( pxList )
118 #define listTEST_LIST_ITEM_INTEGRITY( pxItem )
119 #define listTEST_LIST_INTEGRITY( pxList )
122 #define listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE TickType_t xListItemIntegrityValue1;
123 #define listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE TickType_t xListItemIntegrityValue2;
124 #define listFIRST_LIST_INTEGRITY_CHECK_VALUE TickType_t xListIntegrityValue1;
125 #define listSECOND_LIST_INTEGRITY_CHECK_VALUE TickType_t xListIntegrityValue2;
128 #define listSET_FIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ) ( pxItem )->xListItemIntegrityValue1 = pdINTEGRITY_CHECK_VALUE
129 #define listSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ) ( pxItem )->xListItemIntegrityValue2 = pdINTEGRITY_CHECK_VALUE
130 #define listSET_LIST_INTEGRITY_CHECK_1_VALUE( pxList ) ( pxList )->xListIntegrityValue1 = pdINTEGRITY_CHECK_VALUE
131 #define listSET_LIST_INTEGRITY_CHECK_2_VALUE( pxList ) ( pxList )->xListIntegrityValue2 = pdINTEGRITY_CHECK_VALUE
135 #define listTEST_LIST_ITEM_INTEGRITY( pxItem ) configASSERT( ( ( pxItem )->xListItemIntegrityValue1 == pdINTEGRITY_CHECK_VALUE ) && ( ( pxItem )->xListItemIntegrityValue2 == pdINTEGRITY_CHECK_VALUE ) )
136 #define listTEST_LIST_INTEGRITY( pxList ) configASSERT( ( ( pxList )->xListIntegrityValue1 == pdINTEGRITY_CHECK_VALUE ) && ( ( pxList )->xListIntegrityValue2 == pdINTEGRITY_CHECK_VALUE ) )
156#if ( configUSE_MINI_LIST_ITEM == 1 )
157 struct xMINI_LIST_ITEM
188#define listSET_LIST_ITEM_OWNER( pxListItem, pxOwner ) ( ( pxListItem )->pvOwner = ( void * ) ( pxOwner ) )
197#define listGET_LIST_ITEM_OWNER( pxListItem ) ( ( pxListItem )->pvOwner )
206#define listSET_LIST_ITEM_VALUE( pxListItem, xValue ) ( ( pxListItem )->xItemValue = ( xValue ) )
216#define listGET_LIST_ITEM_VALUE( pxListItem ) ( ( pxListItem )->xItemValue )
225#define listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxList ) ( ( ( pxList )->xListEnd ).pxNext->xItemValue )
233#define listGET_HEAD_ENTRY( pxList ) ( ( ( pxList )->xListEnd ).pxNext )
241#define listGET_NEXT( pxListItem ) ( ( pxListItem )->pxNext )
249#define listGET_END_MARKER( pxList ) ( ( ListItem_t const * ) ( &( ( pxList )->xListEnd ) ) )
258#define listLIST_IS_EMPTY( pxList ) ( ( ( pxList )->uxNumberOfItems == ( UBaseType_t ) 0 ) ? pdTRUE : pdFALSE )
263#define listCURRENT_LIST_LENGTH( pxList ) ( ( pxList )->uxNumberOfItems )
285#if ( configNUMBER_OF_CORES == 1 )
286 #define listGET_OWNER_OF_NEXT_ENTRY( pxTCB, pxList ) \
288 List_t * const pxConstList = ( pxList ); \
291 ( pxConstList )->pxIndex = ( pxConstList )->pxIndex->pxNext; \
292 if( ( void * ) ( pxConstList )->pxIndex == ( void * ) &( ( pxConstList )->xListEnd ) ) \
294 ( pxConstList )->pxIndex = ( pxConstList )->xListEnd.pxNext; \
296 ( pxTCB ) = ( pxConstList )->pxIndex->pvOwner; \
322#define listREMOVE_ITEM( pxItemToRemove ) \
326 List_t * const pxList = ( pxItemToRemove )->pxContainer; \
328 ( pxItemToRemove )->pxNext->pxPrevious = ( pxItemToRemove )->pxPrevious; \
329 ( pxItemToRemove )->pxPrevious->pxNext = ( pxItemToRemove )->pxNext; \
331 if( pxList->pxIndex == ( pxItemToRemove ) ) \
333 pxList->pxIndex = ( pxItemToRemove )->pxPrevious; \
336 ( pxItemToRemove )->pxContainer = NULL; \
337 ( ( pxList )->uxNumberOfItems ) = ( UBaseType_t ) ( ( ( pxList )->uxNumberOfItems ) - 1U ); \
362#define listINSERT_END( pxList, pxNewListItem ) \
364 ListItem_t * const pxIndex = ( pxList )->pxIndex; \
369 listTEST_LIST_INTEGRITY( ( pxList ) ); \
370 listTEST_LIST_ITEM_INTEGRITY( ( pxNewListItem ) ); \
375 ( pxNewListItem )->pxNext = pxIndex; \
376 ( pxNewListItem )->pxPrevious = pxIndex->pxPrevious; \
378 pxIndex->pxPrevious->pxNext = ( pxNewListItem ); \
379 pxIndex->pxPrevious = ( pxNewListItem ); \
382 ( pxNewListItem )->pxContainer = ( pxList ); \
384 ( ( pxList )->uxNumberOfItems ) = ( UBaseType_t ) ( ( ( pxList )->uxNumberOfItems ) + 1U ); \
403#define listGET_OWNER_OF_HEAD_ENTRY( pxList ) ( ( &( ( pxList )->xListEnd ) )->pxNext->pvOwner )
414#define listIS_CONTAINED_WITHIN( pxList, pxListItem ) ( ( ( pxListItem )->pxContainer == ( pxList ) ) ? ( pdTRUE ) : ( pdFALSE ) )
422#define listLIST_ITEM_CONTAINER( pxListItem ) ( ( pxListItem )->pxContainer )
429#define listLIST_IS_INITIALISED( pxList ) ( ( pxList )->xListEnd.xItemValue == portMAX_DELAY )
struct xLIST_ITEM ListItem_t
Definition list.h:154
#define configLIST_VOLATILE
Definition list.h:94
UBaseType_t uxListRemove(ListItem_t *const pxItemToRemove) PRIVILEGED_FUNCTION
Definition list.c:215
#define listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE
Definition list.h:110
#define listFIRST_LIST_INTEGRITY_CHECK_VALUE
Definition list.h:112
void vListInsertEnd(List_t *const pxList, ListItem_t *const pxNewListItem) PRIVILEGED_FUNCTION
Definition list.c:105
struct xLIST_ITEM MiniListItem_t
Definition list.h:166
#define listSECOND_LIST_INTEGRITY_CHECK_VALUE
Definition list.h:113
void vListInsert(List_t *const pxList, ListItem_t *const pxNewListItem) PRIVILEGED_FUNCTION
Definition list.c:139
void vListInitialiseItem(ListItem_t *const pxItem) PRIVILEGED_FUNCTION
Definition list.c:89
#define listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE
Definition list.h:111
void vListInitialise(List_t *const pxList) PRIVILEGED_FUNCTION
Definition list.c:49
#define PRIVILEGED_FUNCTION
Definition mpu_wrappers.h:269
unsigned long UBaseType_t
Definition portmacro.h:60
uint16_t TickType_t
Definition portmacro.h:63
struct xLIST_ITEM *configLIST_VOLATILE pxNext
Definition list.h:148
listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE configLIST_VOLATILE TickType_t xItemValue
Definition list.h:147
struct xLIST_ITEM *configLIST_VOLATILE pxPrevious
Definition list.h:149
void * pvOwner
Definition list.h:150
struct xLIST *configLIST_VOLATILE pxContainer
Definition list.h:151
MiniListItem_t xListEnd
Definition list.h:177
ListItem_t *configLIST_VOLATILE pxIndex
Definition list.h:176
listFIRST_LIST_INTEGRITY_CHECK_VALUE configLIST_VOLATILE UBaseType_t uxNumberOfItems
Definition list.h:175