Go to the documentation of this file.
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 )
Thread_t * Thread_ready
Definition: HeiOS_Thread.c:22
#define listSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE(pxItem)
Definition: list.h:112
#define listTEST_LIST_ITEM_INTEGRITY(pxItem)
Definition: list.h:115
void thread_resume(Thread_t *Thread)
Diese Funktion fügt den übergebenen Thread zur Ready-Liste hinzu.
Definition: HeiOS_Thread.c:282
ListItem_t *configLIST_VOLATILE pxIndex
Definition: list.h:168
void * pvOwner
Definition: list.h:146
#define portMAX_DELAY
Definition: portmacro.h:65
Thread_t * Thread_run
Definition: HeiOS_Thread.c:26
void thread_suspend(Thread_t *Thread)
Diese Funktion entfernt einen Thread von der Ready-Liste und löst gegebenenfalls einen Kontextwechsel au...
Definition: HeiOS_Thread.c:264
#define configTOTAL_HEAP_SIZE
Definition: FreeRTOSConfig.h:33
void vPortFree(void *pv)
Definition: heap_1.c:123
#define portBYTE_ALIGNMENT_MASK
Definition: portable.h:65
void vListInitialise(List_t *const pxList)
Definition: list.c:38
global header file for project
__asm void SVC_Handler(void)
Diese Funktion ermittelt mithile von embedded Assembler den verwendeten Stackpointer.
Definition: HeiOS_Thread.c:317
struct xLIST_ITEM *configLIST_VOLATILE pxPrevious
Definition: list.h:157
void IdleThread(void)
Diese Funktion durchläuft eine Endlosschleife und sorgt für einen definierten Zustand, falls kein Thread für die...
Definition: HeiOS_Thread.c:562
QueueHandle_t xQueueDisplay
Definition: Globals.c:15
QueueHandle_t xQueueTape
Definition: Globals.c:14
UBaseType_t uxListRemove(ListItem_t *const pxItemToRemove)
Definition: list.c:171
QueueHandle_t xQueueVCR
Definition: Globals.c:13
#define traceMALLOC(pvAddress, uiSize)
Definition: FreeRTOS.h:549
void(* fpoutputidle)(void)
Definition: HeiOS_Thread.c:14
void SVC_Handler_service(uint32_t *svc_args)
Diese Funktion dient als API, um Funktionen im priviligierten Modus ausführen zu können. Diese Funktion bes...
Definition: HeiOS_Thread.c:337
void vTaskSuspendAll(void) PRIVILEGED_FUNCTION
Definition: tasks.c:2031
void PendSV_Handler(void)
Diese Funktion führt den Kontextwechsel aus.
Definition: HeiOS_Thread.c:411
struct xLIST_ITEM *configLIST_VOLATILE pxNext
Definition: list.h:156
listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE configLIST_VOLATILE TickType_t xItemValue
Definition: list.h:155
#define PRIVILEGED_FUNCTION
Definition: mpu_wrappers.h:174
uint32_t TickType_t
Definition: portmacro.h:64
void *configLIST_VOLATILE pvContainer
Definition: list.h:147
void vListInsert(List_t *const pxList, ListItem_t *const pxNewListItem) PRIVILEGED_FUNCTION
Definition: list.c:104
#define portBYTE_ALIGNMENT
Definition: portmacro.h:76
void vListInsertEnd(List_t *const pxList, ListItem_t *const pxNewListItem)
Definition: list.c:75
__asm void load_R4toR11(void)
Diese Funktion ladet die Register R4-R8 mit Inline-Assembler.
Definition: HeiOS_Thread.c:491
unsigned long UBaseType_t
Definition: portmacro.h:58
void setfpoutoutidle(void(*fp)(void))
Definition: HeiOS_Thread.c:29
UBaseType_t uxListRemove(ListItem_t *const pxItemToRemove) PRIVILEGED_FUNCTION
Definition: list.c:171
void vPortInitialiseBlocks(void)
Definition: heap_1.c:135
Thread_IDLE_t IDLE_Thread
Definition: HeiOS_Thread.c:19
#define listSECOND_LIST_INTEGRITY_CHECK_VALUE
Definition: list.h:110
void Thread_init(Thread_t *Thread, void *stack, uint32_t stack_size, char name[], void(*pfunc)(), uint32_t executiontime, uint8_t priority)
Diese Funktion initialisert einen Thread und fügt ihn der Ready-Liste hinzu.
Definition: HeiOS_Thread.c:51
static uint8_t ucHeap[configTOTAL_HEAP_SIZE]
Definition: heap_1.c:63
void thread_delay(uint32_t tick)
Diese Funktion entfernt den übergebenen Thread von der Ready-Liste und fügt ihn der Sleep-Liste hinzu....
Definition: HeiOS_Thread.c:300
#define portPOINTER_SIZE_TYPE
Definition: FreeRTOS.h:289
void vListInsert(List_t *const pxList, ListItem_t *const pxNewListItem)
Definition: list.c:104
#define configLIST_VOLATILE
Definition: list.h:93
static size_t xNextFreeByte
Definition: heap_1.c:67
void vListInitialise(List_t *const pxList) PRIVILEGED_FUNCTION
Definition: list.c:38
void vListInitialiseItem(ListItem_t *const pxItem) PRIVILEGED_FUNCTION
Definition: list.c:63
#define listTEST_LIST_INTEGRITY(pxList)
Definition: list.h:116
void update_Thread_slp(void)
Diese Funktion aktualisiert die Verzögerungszeit der Threads.
Definition: HeiOS_Thread.c:578
listFIRST_LIST_INTEGRITY_CHECK_VALUE volatile UBaseType_t uxNumberOfItems
Definition: list.h:167
uint32_t SystemCoreClock
Definition: system_LPC17xx.c:431
void * QueueHandle_t
Definition: queue.h:47
Thread_t * Thread_slp
Definition: HeiOS_Thread.c:24
uint8_t priv_thread_remove(Thread_t **root, Thread_t *Thread)
Diese Funktion entfernt das Threadobjekt aus der Liste.
Definition: HeiOS_Thread.c:230
size_t xPortGetFreeHeapSize(void)
Definition: heap_1.c:142
MiniListItem_t xListEnd
Definition: list.h:169
#define listSET_FIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE(pxItem)
Definition: list.h:111
void TIMER0_IRQHandler(void)
ISR of timer0, called every 20 millisecond.
Definition: Interrupt.c:21
void vListInsertEnd(List_t *const pxList, ListItem_t *const pxNewListItem) PRIVILEGED_FUNCTION
Definition: list.c:75
#define listSET_LIST_INTEGRITY_CHECK_1_VALUE(pxList)
Definition: list.h:113
__asm void save_R4toR11(void)
Diese Funktion sichert die Register R4-R8 mit Inline-Assembler.
Definition: HeiOS_Thread.c:473
#define listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE
Definition: list.h:107
#define mtCOVERAGE_TEST_DELAY()
Definition: FreeRTOS.h:791
#define listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE
Definition: list.h:108
listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE configLIST_VOLATILE TickType_t xItemValue
Definition: list.h:143
BaseType_t xTaskResumeAll(void) PRIVILEGED_FUNCTION
Definition: tasks.c:2104
#define configASSERT(x)
Definition: FreeRTOS.h:235
#define configADJUSTED_HEAP_SIZE
Definition: heap_1.c:54
struct xLIST_ITEM *configLIST_VOLATILE pxPrevious
Definition: list.h:145
void OS_Start_Scheduler(void)
Diese Funktion initialisiert das OS und sorgt anschließend für den Wechsel in den Idlethread.
Definition: HeiOS_Thread.c:513
void update_executiontime(void)
Diese Funktion aktualisiert die Ausführungszeit der Threads.
Definition: HeiOS_Thread.c:613
struct xLIST_ITEM *configLIST_VOLATILE pxNext
Definition: list.h:144
uint8_t priv_thread_sort_add(Thread_t **root, Thread_t *Thread)
Mithilfe der Funktion werden die Thread-Objekte in einer einfach verketteten Liste angeordnet....
Definition: HeiOS_Thread.c:180
void SysTick_Handler(void)
Diese Funktion wird in regelmäßigen Abständen ausgeführt.
Definition: HeiOS_Thread.c:380
#define listFIRST_LIST_INTEGRITY_CHECK_VALUE
Definition: list.h:109
#define listSET_LIST_INTEGRITY_CHECK_2_VALUE(pxList)
Definition: list.h:114
void vListInitialiseItem(ListItem_t *const pxItem)
Definition: list.c:63
#define mtCOVERAGE_TEST_MARKER()
Definition: FreeRTOS.h:787
void * pvPortMalloc(size_t xWantedSize)
Definition: heap_1.c:71