#include <stdlib.h>
#include <string.h>
#include "FreeRTOS.h"
#include "task.h"
#include "timers.h"
#include "stack_macros.h"
#include <stdio.h>
Data Structures | |
struct | tskTaskControlBlock |
Typedefs | |
typedef tskTCB | TCB_t |
typedef struct tskTaskControlBlock | tskTCB |
Functions | |
eTaskState | eTaskGetState (TaskHandle_t xTask) |
task. More... | |
char * | pcTaskGetName (TaskHandle_t xTaskToQuery) |
static | portTASK_FUNCTION (prvIdleTask, pvParameters) |
static void | prvAddCurrentTaskToDelayedList (TickType_t xTicksToWait, const BaseType_t xCanBlockIndefinitely) |
static void | prvAddNewTaskToReadyList (TCB_t *pxNewTCB) |
static void | prvCheckTasksWaitingTermination (void) |
static void | prvDeleteTCB (TCB_t *pxTCB) |
static void | prvInitialiseNewTask (TaskFunction_t pxTaskCode, const char *const pcName, const uint32_t ulStackDepth, void *const pvParameters, UBaseType_t uxPriority, TaskHandle_t *const pxCreatedTask, TCB_t *pxNewTCB, const MemoryRegion_t *const xRegions) |
static void | prvInitialiseTaskLists (static void prvCheckTasksWaitingTermination void) |
static void | prvInitialiseTaskLists (void) |
static UBaseType_t | prvListTasksWithinSingleList (TaskStatus_t *pxTaskStatusArray, List_t *pxList, eTaskState eState) |
static void | prvResetNextTaskUnblockTime (void) |
static uint16_t | prvTaskCheckFreeStackSpace (const uint8_t *pucStackByte) |
static BaseType_t | prvTaskIsTaskSuspended (const TaskHandle_t xTask) PRIVILEGED_FUNCTION |
Utility task that simply returns pdTRUE if the task referenced by xTask is currently in the Suspended state, or pdFALSE if the task referenced by xTask is in any other state. More... | |
static char * | prvWriteNameToBuffer (char *pcBuffer, const char *pcTaskName) |
void * | pvTaskIncrementMutexHeldCount (void) |
uint32_t | ulTaskNotifyTake (BaseType_t xClearCountOnExit, TickType_t xTicksToWait) |
UBaseType_t | uxTaskGetNumberOfTasks (void) |
UBaseType_t | uxTaskGetSystemState (TaskStatus_t *const pxTaskStatusArray, const UBaseType_t uxArraySize, uint32_t *const pulTotalRunTime) |
configUSE_TRACE_FACILITY must be defined as 1 in FreeRTOSConfig.h for uxTaskGetSystemState() to be available. More... | |
UBaseType_t | uxTaskGetTaskNumber (TaskHandle_t xTask) |
UBaseType_t | uxTaskPriorityGet (TaskHandle_t xTask) |
UBaseType_t | uxTaskPriorityGetFromISR (TaskHandle_t xTask) |
task. More... | |
TickType_t | uxTaskResetEventItemValue (void) |
void | vApplicationStackOverflowHook (TaskHandle_t xTask, char *pcTaskName) |
void | vApplicationTickHook (void) |
This function is called by FreeRTOS each tick. More... | |
void | vTaskDelay (const TickType_t xTicksToDelay) |
void | vTaskDelayUntil (TickType_t *const pxPreviousWakeTime, const TickType_t xTimeIncrement) |
void | vTaskDelete (TaskHandle_t xTaskToDelete) |
void | vTaskEndScheduler (void) |
void | vTaskGetInfo (TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState) |
void | vTaskInternalSetTimeOutState (TimeOut_t *const pxTimeOut) |
void | vTaskList (char *pcWriteBuffer) |
void | vTaskMissedYield (void) |
void | vTaskNotifyGiveFromISR (TaskHandle_t xTaskToNotify, BaseType_t *pxHigherPriorityTaskWoken) |
void | vTaskPlaceOnEventList (List_t *const pxEventList, const TickType_t xTicksToWait) |
void | vTaskPlaceOnEventListRestricted (List_t *const pxEventList, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely) |
void | vTaskPlaceOnUnorderedEventList (List_t *pxEventList, const TickType_t xItemValue, const TickType_t xTicksToWait) |
void | vTaskPriorityDisinheritAfterTimeout (TaskHandle_t const pxMutexHolder, UBaseType_t uxHighestPriorityWaitingTask) |
void | vTaskPrioritySet (TaskHandle_t xTask, UBaseType_t uxNewPriority) |
void | vTaskRemoveFromUnorderedEventList (ListItem_t *pxEventListItem, const TickType_t xItemValue) |
void | vTaskResume (TaskHandle_t xTaskToResume) |
void | vTaskSetTaskNumber (TaskHandle_t xTask, const UBaseType_t uxHandle) |
void | vTaskSetTimeOutState (TimeOut_t *const pxTimeOut) |
void | vTaskStartScheduler (void) |
void | vTaskSuspend (TaskHandle_t xTaskToSuspend) |
void | vTaskSuspendAll (void) |
void | vTaskSwitchContext (void) |
BaseType_t | xTaskCheckForTimeOut (TimeOut_t *const pxTimeOut, TickType_t *const pxTicksToWait) |
BaseType_t | xTaskGenericNotify (TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t *pulPreviousNotificationValue) |
BaseType_t | xTaskGenericNotifyFromISR (TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t *pulPreviousNotificationValue, BaseType_t *pxHigherPriorityTaskWoken) |
TaskHandle_t | xTaskGetCurrentTaskHandle (void) |
BaseType_t | xTaskGetSchedulerState (void) |
TickType_t | xTaskGetTickCount (void) |
TickType_t | xTaskGetTickCountFromISR (void) |
BaseType_t | xTaskIncrementTick (void) |
BaseType_t | xTaskNotifyStateClear (TaskHandle_t xTask) |
BaseType_t | xTaskNotifyWait (uint32_t ulBitsToClearOnEntry, uint32_t ulBitsToClearOnExit, uint32_t *pulNotificationValue, TickType_t xTicksToWait) |
BaseType_t | xTaskPriorityDisinherit (TaskHandle_t const pxMutexHolder) |
BaseType_t | xTaskPriorityInherit (TaskHandle_t const pxMutexHolder) |
BaseType_t | xTaskRemoveFromEventList (const List_t *const pxEventList) |
BaseType_t | xTaskResumeAll (void) |
BaseType_t | xTaskResumeFromISR (TaskHandle_t xTaskToResume) |
#define configIDLE_TASK_NAME "IDLE" |
Referenced by vTaskStartScheduler().
#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE |
#define prvAddTaskToReadyList | ( | pxTCB | ) |
Referenced by prvAddNewTaskToReadyList(), vTaskNotifyGiveFromISR(), vTaskPriorityDisinheritAfterTimeout(), vTaskPrioritySet(), vTaskRemoveFromUnorderedEventList(), vTaskResume(), xTaskGenericNotify(), xTaskGenericNotifyFromISR(), xTaskIncrementTick(), xTaskPriorityDisinherit(), xTaskPriorityInherit(), xTaskRemoveFromEventList(), xTaskResumeAll(), and xTaskResumeFromISR().
#define prvGetTCBFromHandle | ( | pxHandle | ) | ( ( ( pxHandle ) == NULL ) ? ( TCB_t * ) pxCurrentTCB : ( TCB_t * ) ( pxHandle ) ) |
#define taskEVENT_LIST_ITEM_VALUE_IN_USE 0x80000000UL |
#define taskNOT_WAITING_NOTIFICATION ( ( uint8_t ) 0 ) |
Referenced by prvInitialiseNewTask(), ulTaskNotifyTake(), vTaskSuspend(), xTaskNotifyStateClear(), and xTaskNotifyWait().
#define taskNOTIFICATION_RECEIVED ( ( uint8_t ) 2 ) |
#define taskRECORD_READY_PRIORITY | ( | uxPriority | ) | portRECORD_READY_PRIORITY( uxPriority, uxTopReadyPriority ) |
#define taskRESET_READY_PRIORITY | ( | uxPriority | ) |
Referenced by vTaskDelete(), vTaskPriorityDisinheritAfterTimeout(), vTaskSuspend(), xTaskPriorityDisinherit(), and xTaskPriorityInherit().
#define taskSELECT_HIGHEST_PRIORITY_TASK | ( | ) |
Referenced by vTaskSwitchContext().
#define taskSWITCH_DELAYED_LISTS | ( | ) |
Referenced by xTaskIncrementTick().
#define taskWAITING_NOTIFICATION ( ( uint8_t ) 1 ) |
#define taskYIELD_IF_USING_PREEMPTION | ( | ) | portYIELD_WITHIN_API() |
Referenced by prvAddNewTaskToReadyList(), vTaskPrioritySet(), vTaskResume(), xTaskGenericNotify(), and xTaskResumeAll().
#define tskBLOCKED_CHAR ( 'B' ) |
Referenced by vTaskList().
#define tskDELETED_CHAR ( 'D' ) |
Referenced by vTaskList().
#define tskDYNAMICALLY_ALLOCATED_STACK_AND_TCB ( ( uint8_t ) 0 ) |
Referenced by prvDeleteTCB().
#define tskREADY_CHAR ( 'R' ) |
Referenced by vTaskList().
#define tskSET_NEW_STACKS_TO_KNOWN_VALUE 1 |
#define tskSTACK_FILL_BYTE ( 0xa5U ) |
Referenced by prvInitialiseNewTask(), and prvTaskCheckFreeStackSpace().
#define tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE ( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) |
#define tskSTATICALLY_ALLOCATED_STACK_AND_TCB ( ( uint8_t ) 2 ) |
Referenced by prvDeleteTCB().
#define tskSTATICALLY_ALLOCATED_STACK_ONLY ( ( uint8_t ) 1 ) |
Referenced by prvDeleteTCB().
#define tskSUSPENDED_CHAR ( 'S' ) |
Referenced by vTaskList().
typedef struct tskTaskControlBlock tskTCB |
eTaskState eTaskGetState | ( | TaskHandle_t | xTask | ) |
task.
h
eTaskState eTaskGetState( TaskHandle_t xTask );
INCLUDE_eTaskGetState must be defined as 1 for this function to be available. See the configuration section for more information.
Obtain the state of any task. States are encoded by the eTaskState enumerated type.
xTask | Handle of the task to be queried. |
References configASSERT, eBlocked, eDeleted, eReady, eRunning, eSuspended, listLIST_ITEM_CONTAINER, pxCurrentTCB, pxDelayedTaskList, pxOverflowDelayedTaskList, taskENTER_CRITICAL, taskEXIT_CRITICAL, tskTaskControlBlock::xEventListItem, tskTaskControlBlock::xStateListItem, xSuspendedTaskList, and xTasksWaitingTermination.
Referenced by vTaskGetInfo().
char* pcTaskGetName | ( | TaskHandle_t | xTaskToQuery | ) |
References configASSERT, tskTaskControlBlock::pcTaskName, and prvGetTCBFromHandle.
|
static |
THIS IS THE RTOS IDLE TASK - WHICH IS CREATED AUTOMATICALLY WHEN THE
SCHEDULER IS STARTED.
References configASSERT, configEXPECTED_IDLE_TIME_BEFORE_SLEEP, configPRE_SUPPRESS_TICKS_AND_SLEEP_PROCESSING, listCURRENT_LIST_LENGTH, mtCOVERAGE_TEST_MARKER, portSUPPRESS_TICKS_AND_SLEEP, portTASK_CALLS_SECURE_FUNCTIONS, prvCheckTasksWaitingTermination(), pxReadyTasksLists, taskYIELD, traceLOW_POWER_IDLE_BEGIN, traceLOW_POWER_IDLE_END, vApplicationIdleHook(), vTaskSuspendAll(), xNextTaskUnblockTime, xTaskResumeAll(), and xTickCount.
|
static |
References listSET_LIST_ITEM_VALUE, mtCOVERAGE_TEST_MARKER, pdFALSE, pxCurrentTCB, pxDelayedTaskList, pxOverflowDelayedTaskList, uxListRemove(), tskTaskControlBlock::uxPriority, uxTopReadyPriority, vListInsert(), vListInsertEnd(), xNextTaskUnblockTime, tskTaskControlBlock::xStateListItem, xSuspendedTaskList, and xTickCount.
Referenced by ulTaskNotifyTake(), vTaskDelay(), vTaskDelayUntil(), vTaskPlaceOnEventList(), vTaskPlaceOnEventListRestricted(), vTaskPlaceOnUnorderedEventList(), and xTaskNotifyWait().
|
static |
References mtCOVERAGE_TEST_MARKER, pdFALSE, portSETUP_TCB, prvAddTaskToReadyList, prvInitialiseTaskLists(), pxCurrentTCB, taskENTER_CRITICAL, taskEXIT_CRITICAL, taskYIELD_IF_USING_PREEMPTION, traceTASK_CREATE, uxCurrentNumberOfTasks, tskTaskControlBlock::uxPriority, uxTaskNumber, tskTaskControlBlock::uxTCBNumber, and xSchedulerRunning.
|
static |
THIS FUNCTION IS CALLED FROM THE RTOS IDLE TASK
References listGET_OWNER_OF_HEAD_ENTRY, prvDeleteTCB(), taskENTER_CRITICAL, taskEXIT_CRITICAL, uxCurrentNumberOfTasks, uxDeletedTasksWaitingCleanUp, uxListRemove(), tskTaskControlBlock::xStateListItem, and xTasksWaitingTermination.
Referenced by portTASK_FUNCTION().
|
static |
|
static |
References configASSERT, configMAX_PRIORITIES, configMAX_TASK_NAME_LEN, configNUM_THREAD_LOCAL_STORAGE_POINTERS, listSET_LIST_ITEM_OWNER, listSET_LIST_ITEM_VALUE, mtCOVERAGE_TEST_MARKER, tskTaskControlBlock::pcTaskName, pdFALSE, pdTRUE, portPOINTER_SIZE_TYPE, portPRIVILEGE_BIT, pxPortInitialiseStack(), tskTaskControlBlock::pxStack, tskTaskControlBlock::pxTopOfStack, taskNOT_WAITING_NOTIFICATION, tskSTACK_FILL_BYTE, tskTaskControlBlock::ucNotifyState, tskTaskControlBlock::ulNotifiedValue, tskTaskControlBlock::uxBasePriority, tskTaskControlBlock::uxMutexesHeld, tskTaskControlBlock::uxPriority, vListInitialiseItem(), tskTaskControlBlock::xEventListItem, and tskTaskControlBlock::xStateListItem.
|
static |
Referenced by prvAddNewTaskToReadyList().
|
static |
|
static |
References configLIST_VOLATILE, listCURRENT_LIST_LENGTH, listGET_OWNER_OF_NEXT_ENTRY, mtCOVERAGE_TEST_MARKER, pdTRUE, and vTaskGetInfo().
Referenced by uxTaskGetSystemState().
|
static |
References listGET_LIST_ITEM_VALUE, listGET_OWNER_OF_HEAD_ENTRY, listLIST_IS_EMPTY, pdFALSE, pxDelayedTaskList, and xNextTaskUnblockTime.
Referenced by vTaskDelete(), vTaskSuspend(), xTaskGenericNotify(), xTaskRemoveFromEventList(), and xTaskResumeAll().
|
static |
References tskSTACK_FILL_BYTE.
Referenced by vTaskGetInfo().
|
static |
Utility task that simply returns pdTRUE if the task referenced by xTask is currently in the Suspended state, or pdFALSE if the task referenced by xTask is in any other state.
References configASSERT, listIS_CONTAINED_WITHIN, mtCOVERAGE_TEST_MARKER, pdFALSE, pdTRUE, tskTaskControlBlock::xEventListItem, xPendingReadyList, tskTaskControlBlock::xStateListItem, and xSuspendedTaskList.
Referenced by vTaskResume(), and xTaskResumeFromISR().
|
static |
References configMAX_TASK_NAME_LEN.
Referenced by vTaskList().
void* pvTaskIncrementMutexHeldCount | ( | void | ) |
References pxCurrentTCB, and tskTaskControlBlock::uxMutexesHeld.
Referenced by xQueueSemaphoreTake().
uint32_t ulTaskNotifyTake | ( | BaseType_t | xClearCountOnExit, |
TickType_t | xTicksToWait | ||
) |
References mtCOVERAGE_TEST_MARKER, pdFALSE, pdTRUE, portYIELD_WITHIN_API, prvAddCurrentTaskToDelayedList(), pxCurrentTCB, taskENTER_CRITICAL, taskEXIT_CRITICAL, taskNOT_WAITING_NOTIFICATION, taskWAITING_NOTIFICATION, traceTASK_NOTIFY_TAKE, traceTASK_NOTIFY_TAKE_BLOCK, tskTaskControlBlock::ucNotifyState, and tskTaskControlBlock::ulNotifiedValue.
UBaseType_t uxTaskGetNumberOfTasks | ( | void | ) |
References uxCurrentNumberOfTasks.
Referenced by task_monitor().
UBaseType_t uxTaskGetSystemState | ( | TaskStatus_t *const | pxTaskStatusArray, |
const UBaseType_t | uxArraySize, | ||
uint32_t *const | pulTotalRunTime | ||
) |
configUSE_TRACE_FACILITY must be defined as 1 in FreeRTOSConfig.h for uxTaskGetSystemState() to be available.
uxTaskGetSystemState() populates an TaskStatus_t structure for each task in the system. TaskStatus_t structures contain, among other things, members for the task handle, task name, task priority, task state, and total amount of run time consumed by the task. See the TaskStatus_t structure definition in this file for the full member list.
NOTE: This function is intended for debugging use only as its use results in the scheduler remaining suspended for an extended period.
pxTaskStatusArray | A pointer to an array of TaskStatus_t structures. The array must contain at least one TaskStatus_t structure for each task that is under the control of the RTOS. The number of tasks under the control of the RTOS can be determined using the uxTaskGetNumberOfTasks() API function. |
uxArraySize | The size of the array pointed to by the pxTaskStatusArray parameter. The size is specified as the number of indexes in the array, or the number of TaskStatus_t structures contained in the array, not by the number of bytes in the array. |
pulTotalRunTime | If configGENERATE_RUN_TIME_STATS is set to 1 in FreeRTOSConfig.h then *pulTotalRunTime is set by uxTaskGetSystemState() to the total run time (as defined by the run time stats clock, see http://www.freertos.org/rtos-run-time-stats.html) since the target booted. pulTotalRunTime can be set to NULL to omit the total run time information. |
Example usage:
This example demonstrates how a human readable table of run time stats information is generated from raw data provided by uxTaskGetSystemState(). The human readable table is written to pcWriteBuffer void vTaskGetRunTimeStats( char *pcWriteBuffer ) { TaskStatus_t *pxTaskStatusArray; volatile UBaseType_t uxArraySize, x; uint32_t ulTotalRunTime, ulStatsAsPercentage;
Make sure the write buffer does not contain a string. pcWriteBuffer = 0x00;
Take a snapshot of the number of tasks in case it changes while this function is executing. uxArraySize = uxTaskGetNumberOfTasks();
Allocate a TaskStatus_t structure for each task. An array could be allocated statically at compile time. pxTaskStatusArray = pvPortMalloc( uxArraySize * sizeof( TaskStatus_t ) );
if( pxTaskStatusArray != NULL ) { Generate raw status information about each task. uxArraySize = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, &ulTotalRunTime );
For percentage calculations. ulTotalRunTime /= 100UL;
Avoid divide by zero errors. if( ulTotalRunTime > 0 ) { For each populated position in the pxTaskStatusArray array, format the raw data as human readable ASCII data for( x = 0; x < uxArraySize; x++ ) { What percentage of the total run time has the task used? This will always be rounded down to the nearest integer. ulTotalRunTimeDiv100 has already been divided by 100. ulStatsAsPercentage = pxTaskStatusArray[ x ].ulRunTimeCounter / ulTotalRunTime;
if( ulStatsAsPercentage > 0UL ) { sprintf( pcWriteBuffer, "%s\t\t%lu\t\t%lu%%\r\n", pxTaskStatusArray[ x ].pcTaskName, pxTaskStatusArray[ x ].ulRunTimeCounter, ulStatsAsPercentage ); } else { If the percentage is zero here then the task has consumed less than 1% of the total run time. sprintf( pcWriteBuffer, "%s\t\t%lu\t\t<1%%\r\n", pxTaskStatusArray[ x ].pcTaskName, pxTaskStatusArray[ x ].ulRunTimeCounter ); }
pcWriteBuffer += strlen( ( char * ) pcWriteBuffer ); } }
The array is no longer needed, free the memory it consumes. vPortFree( pxTaskStatusArray ); } }
References configMAX_PRIORITIES, eBlocked, eDeleted, eReady, eSuspended, mtCOVERAGE_TEST_MARKER, prvListTasksWithinSingleList(), pxDelayedTaskList, pxOverflowDelayedTaskList, pxReadyTasksLists, uxCurrentNumberOfTasks, vTaskSuspendAll(), xSuspendedTaskList, xTaskResumeAll(), and xTasksWaitingTermination.
Referenced by vTaskList().
UBaseType_t uxTaskGetTaskNumber | ( | TaskHandle_t | xTask | ) |
References tskTaskControlBlock::uxTaskNumber.
UBaseType_t uxTaskPriorityGet | ( | TaskHandle_t | xTask | ) |
References prvGetTCBFromHandle, taskENTER_CRITICAL, taskEXIT_CRITICAL, and tskTaskControlBlock::uxPriority.
UBaseType_t uxTaskPriorityGetFromISR | ( | TaskHandle_t | xTask | ) |
task.
h
UBaseType_t uxTaskPriorityGetFromISR( TaskHandle_t xTask );
A version of uxTaskPriorityGet() that can be used from an ISR.
References portASSERT_IF_INTERRUPT_PRIORITY_INVALID, portCLEAR_INTERRUPT_MASK_FROM_ISR, portSET_INTERRUPT_MASK_FROM_ISR, prvGetTCBFromHandle, and tskTaskControlBlock::uxPriority.
TickType_t uxTaskResetEventItemValue | ( | void | ) |
References configMAX_PRIORITIES, listGET_LIST_ITEM_VALUE, listSET_LIST_ITEM_VALUE, pxCurrentTCB, tskTaskControlBlock::uxPriority, and tskTaskControlBlock::xEventListItem.
Referenced by xEventGroupSync(), and xEventGroupWaitBits().
void vApplicationStackOverflowHook | ( | TaskHandle_t | xTask, |
char * | pcTaskName | ||
) |
void vApplicationTickHook | ( | void | ) |
This function is called by FreeRTOS each tick.
Referenced by xTaskIncrementTick().
void vTaskDelay | ( | const TickType_t | xTicksToDelay | ) |
References configASSERT, mtCOVERAGE_TEST_MARKER, pdFALSE, portYIELD_WITHIN_API, prvAddCurrentTaskToDelayedList(), traceTASK_DELAY, uxSchedulerSuspended, vTaskSuspendAll(), and xTaskResumeAll().
Referenced by task_led(), and task_monitor().
void vTaskDelayUntil | ( | TickType_t *const | pxPreviousWakeTime, |
const TickType_t | xTimeIncrement | ||
) |
void vTaskDelete | ( | TaskHandle_t | xTaskToDelete | ) |
References configASSERT, listLIST_ITEM_CONTAINER, mtCOVERAGE_TEST_MARKER, pdFALSE, portPRE_TASK_DELETE_HOOK, portYIELD_WITHIN_API, prvDeleteTCB(), prvGetTCBFromHandle, prvResetNextTaskUnblockTime(), pxCurrentTCB, taskENTER_CRITICAL, taskEXIT_CRITICAL, taskRESET_READY_PRIORITY, traceTASK_DELETE, uxCurrentNumberOfTasks, uxDeletedTasksWaitingCleanUp, uxListRemove(), tskTaskControlBlock::uxPriority, uxSchedulerSuspended, uxTaskNumber, vListInsertEnd(), tskTaskControlBlock::xEventListItem, xSchedulerRunning, tskTaskControlBlock::xStateListItem, xTasksWaitingTermination, and xYieldPending.
void vTaskEndScheduler | ( | void | ) |
References pdFALSE, vPortEndScheduler(), and xSchedulerRunning.
void vTaskGetInfo | ( | TaskHandle_t | xTask, |
TaskStatus_t * | pxTaskStatus, | ||
BaseType_t | xGetFreeStackSpace, | ||
eTaskState | eState | ||
) |
References eBlocked, xTASK_STATUS::eCurrentState, eInvalid, eRunning, eSuspended, eTaskGetState(), listLIST_ITEM_CONTAINER, xTASK_STATUS::pcTaskName, tskTaskControlBlock::pcTaskName, pdFALSE, prvGetTCBFromHandle, prvTaskCheckFreeStackSpace(), pxCurrentTCB, tskTaskControlBlock::pxStack, xTASK_STATUS::pxStackBase, xTASK_STATUS::ulRunTimeCounter, xTASK_STATUS::usStackHighWaterMark, xTASK_STATUS::uxBasePriority, tskTaskControlBlock::uxBasePriority, xTASK_STATUS::uxCurrentPriority, tskTaskControlBlock::uxPriority, tskTaskControlBlock::uxTCBNumber, vTaskSuspendAll(), tskTaskControlBlock::xEventListItem, xTASK_STATUS::xHandle, xTASK_STATUS::xTaskNumber, and xTaskResumeAll().
Referenced by prvListTasksWithinSingleList().
void vTaskInternalSetTimeOutState | ( | TimeOut_t *const | pxTimeOut | ) |
References xNumOfOverflows, xTIME_OUT::xOverflowCount, xTickCount, and xTIME_OUT::xTimeOnEntering.
Referenced by xQueueGenericSend(), xQueuePeek(), xQueueReceive(), xQueueSemaphoreTake(), and xTaskCheckForTimeOut().
void vTaskList | ( | char * | pcWriteBuffer | ) |
References eBlocked, eDeleted, eReady, eSuspended, mtCOVERAGE_TEST_MARKER, prvWriteNameToBuffer(), pvPortMalloc(), tskBLOCKED_CHAR, tskDELETED_CHAR, tskREADY_CHAR, tskSUSPENDED_CHAR, uxCurrentNumberOfTasks, uxTaskGetSystemState(), and vPortFree().
Referenced by task_monitor().
void vTaskMissedYield | ( | void | ) |
References pdTRUE, and xYieldPending.
Referenced by prvUnlockQueue().
void vTaskNotifyGiveFromISR | ( | TaskHandle_t | xTaskToNotify, |
BaseType_t * | pxHigherPriorityTaskWoken | ||
) |
References configASSERT, listLIST_ITEM_CONTAINER, mtCOVERAGE_TEST_MARKER, pdFALSE, pdTRUE, portASSERT_IF_INTERRUPT_PRIORITY_INVALID, portCLEAR_INTERRUPT_MASK_FROM_ISR, portSET_INTERRUPT_MASK_FROM_ISR, prvAddTaskToReadyList, pxCurrentTCB, taskNOTIFICATION_RECEIVED, taskWAITING_NOTIFICATION, traceTASK_NOTIFY_GIVE_FROM_ISR, tskTaskControlBlock::ucNotifyState, tskTaskControlBlock::ulNotifiedValue, uxListRemove(), tskTaskControlBlock::uxPriority, uxSchedulerSuspended, vListInsertEnd(), tskTaskControlBlock::xEventListItem, xPendingReadyList, tskTaskControlBlock::xStateListItem, and xYieldPending.
void vTaskPlaceOnEventList | ( | List_t *const | pxEventList, |
const TickType_t | xTicksToWait | ||
) |
References configASSERT, pdTRUE, prvAddCurrentTaskToDelayedList(), pxCurrentTCB, vListInsert(), and tskTaskControlBlock::xEventListItem.
Referenced by xQueueGenericSend(), xQueuePeek(), xQueueReceive(), and xQueueSemaphoreTake().
void vTaskPlaceOnEventListRestricted | ( | List_t *const | pxEventList, |
TickType_t | xTicksToWait, | ||
const BaseType_t | xWaitIndefinitely | ||
) |
References configASSERT, pdFALSE, prvAddCurrentTaskToDelayedList(), pxCurrentTCB, traceTASK_DELAY_UNTIL, vListInsertEnd(), tskTaskControlBlock::xEventListItem, and xTickCount.
Referenced by vQueueWaitForMessageRestricted().
void vTaskPlaceOnUnorderedEventList | ( | List_t * | pxEventList, |
const TickType_t | xItemValue, | ||
const TickType_t | xTicksToWait | ||
) |
void vTaskPriorityDisinheritAfterTimeout | ( | TaskHandle_t const | pxMutexHolder, |
UBaseType_t | uxHighestPriorityWaitingTask | ||
) |
References configASSERT, configMAX_PRIORITIES, listGET_LIST_ITEM_VALUE, listIS_CONTAINED_WITHIN, listSET_LIST_ITEM_VALUE, mtCOVERAGE_TEST_MARKER, pdFALSE, prvAddTaskToReadyList, pxCurrentTCB, pxReadyTasksLists, taskEVENT_LIST_ITEM_VALUE_IN_USE, taskRESET_READY_PRIORITY, traceTASK_PRIORITY_DISINHERIT, tskTaskControlBlock::uxBasePriority, uxListRemove(), tskTaskControlBlock::uxMutexesHeld, tskTaskControlBlock::uxPriority, tskTaskControlBlock::xEventListItem, and tskTaskControlBlock::xStateListItem.
Referenced by xQueueSemaphoreTake().
void vTaskPrioritySet | ( | TaskHandle_t | xTask, |
UBaseType_t | uxNewPriority | ||
) |
References configASSERT, configMAX_PRIORITIES, listGET_LIST_ITEM_VALUE, listIS_CONTAINED_WITHIN, listSET_LIST_ITEM_VALUE, mtCOVERAGE_TEST_MARKER, pdFALSE, pdTRUE, prvAddTaskToReadyList, prvGetTCBFromHandle, pxCurrentTCB, pxReadyTasksLists, taskENTER_CRITICAL, taskEVENT_LIST_ITEM_VALUE_IN_USE, taskEXIT_CRITICAL, taskYIELD_IF_USING_PREEMPTION, traceTASK_PRIORITY_SET, tskTaskControlBlock::uxBasePriority, uxListRemove(), tskTaskControlBlock::uxPriority, uxTopReadyPriority, tskTaskControlBlock::xEventListItem, and tskTaskControlBlock::xStateListItem.
void vTaskRemoveFromUnorderedEventList | ( | ListItem_t * | pxEventListItem, |
const TickType_t | xItemValue | ||
) |
References configASSERT, listGET_LIST_ITEM_OWNER, listSET_LIST_ITEM_VALUE, pdFALSE, pdTRUE, prvAddTaskToReadyList, pxCurrentTCB, taskEVENT_LIST_ITEM_VALUE_IN_USE, uxListRemove(), tskTaskControlBlock::uxPriority, uxSchedulerSuspended, tskTaskControlBlock::xStateListItem, and xYieldPending.
Referenced by vEventGroupDelete(), and xEventGroupSetBits().
void vTaskResume | ( | TaskHandle_t | xTaskToResume | ) |
void vTaskSetTaskNumber | ( | TaskHandle_t | xTask, |
const UBaseType_t | uxHandle | ||
) |
References tskTaskControlBlock::uxTaskNumber.
void vTaskSetTimeOutState | ( | TimeOut_t *const | pxTimeOut | ) |
References configASSERT, taskENTER_CRITICAL, taskEXIT_CRITICAL, xNumOfOverflows, xTIME_OUT::xOverflowCount, xTickCount, and xTIME_OUT::xTimeOnEntering.
Referenced by xStreamBufferSend().
void vTaskStartScheduler | ( | void | ) |
References configASSERT, configIDLE_TASK_NAME, configMINIMAL_STACK_SIZE, errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY, mtCOVERAGE_TEST_MARKER, pdFAIL, pdFALSE, pdPASS, pdTRUE, portCONFIGURE_TIMER_FOR_RUN_TIME_STATS, portPRIVILEGE_BIT, pxCurrentTCB, tskIDLE_PRIORITY, xIdleTaskHandle, xNextTaskUnblockTime, xPortStartScheduler(), xSchedulerRunning, xTickCount, and xTimerCreateTimerTask().
Referenced by main().
void vTaskSuspend | ( | TaskHandle_t | xTaskToSuspend | ) |
References configASSERT, listCURRENT_LIST_LENGTH, listLIST_ITEM_CONTAINER, mtCOVERAGE_TEST_MARKER, pdFALSE, portYIELD_WITHIN_API, prvGetTCBFromHandle, prvResetNextTaskUnblockTime(), pxCurrentTCB, taskENTER_CRITICAL, taskEXIT_CRITICAL, taskNOT_WAITING_NOTIFICATION, taskRESET_READY_PRIORITY, taskWAITING_NOTIFICATION, traceTASK_SUSPEND, tskTaskControlBlock::ucNotifyState, uxCurrentNumberOfTasks, uxListRemove(), tskTaskControlBlock::uxPriority, uxSchedulerSuspended, vListInsertEnd(), vTaskSwitchContext(), tskTaskControlBlock::xEventListItem, xSchedulerRunning, tskTaskControlBlock::xStateListItem, and xSuspendedTaskList.
void vTaskSuspendAll | ( | void | ) |
References uxSchedulerSuspended.
Referenced by portTASK_FUNCTION(), prvProcessTimerOrBlockTask(), pvPortMalloc(), uxTaskGetSystemState(), vEventGroupDelete(), vPortFree(), vTaskDelay(), vTaskDelayUntil(), vTaskGetInfo(), xEventGroupSetBits(), xEventGroupSync(), xEventGroupWaitBits(), xQueueGenericSend(), xQueuePeek(), xQueueReceive(), and xQueueSemaphoreTake().
void vTaskSwitchContext | ( | void | ) |
References mtCOVERAGE_TEST_MARKER, pdFALSE, pdTRUE, pxCurrentTCB, taskCHECK_FOR_STACK_OVERFLOW, taskSELECT_HIGHEST_PRIORITY_TASK, traceTASK_SWITCHED_IN, traceTASK_SWITCHED_OUT, uxSchedulerSuspended, and xYieldPending.
Referenced by vTaskSuspend().
BaseType_t xTaskCheckForTimeOut | ( | TimeOut_t *const | pxTimeOut, |
TickType_t *const | pxTicksToWait | ||
) |
References configASSERT, pdFALSE, pdTRUE, pxCurrentTCB, taskENTER_CRITICAL, taskEXIT_CRITICAL, vTaskInternalSetTimeOutState(), xNumOfOverflows, xTIME_OUT::xOverflowCount, xTickCount, and xTIME_OUT::xTimeOnEntering.
Referenced by xQueueGenericSend(), xQueuePeek(), xQueueReceive(), xQueueSemaphoreTake(), and xStreamBufferSend().
BaseType_t xTaskGenericNotify | ( | TaskHandle_t | xTaskToNotify, |
uint32_t | ulValue, | ||
eNotifyAction | eAction, | ||
uint32_t * | pulPreviousNotificationValue | ||
) |
References configASSERT, eIncrement, eNoAction, eSetBits, eSetValueWithoutOverwrite, eSetValueWithOverwrite, listLIST_ITEM_CONTAINER, mtCOVERAGE_TEST_MARKER, pdFAIL, pdPASS, prvAddTaskToReadyList, prvResetNextTaskUnblockTime(), pxCurrentTCB, taskENTER_CRITICAL, taskEXIT_CRITICAL, taskNOTIFICATION_RECEIVED, taskWAITING_NOTIFICATION, taskYIELD_IF_USING_PREEMPTION, traceTASK_NOTIFY, tskTaskControlBlock::ucNotifyState, tskTaskControlBlock::ulNotifiedValue, uxListRemove(), tskTaskControlBlock::uxPriority, tskTaskControlBlock::xEventListItem, and tskTaskControlBlock::xStateListItem.
BaseType_t xTaskGenericNotifyFromISR | ( | TaskHandle_t | xTaskToNotify, |
uint32_t | ulValue, | ||
eNotifyAction | eAction, | ||
uint32_t * | pulPreviousNotificationValue, | ||
BaseType_t * | pxHigherPriorityTaskWoken | ||
) |
References configASSERT, eIncrement, eNoAction, eSetBits, eSetValueWithoutOverwrite, eSetValueWithOverwrite, listLIST_ITEM_CONTAINER, mtCOVERAGE_TEST_MARKER, pdFAIL, pdFALSE, pdPASS, pdTRUE, portASSERT_IF_INTERRUPT_PRIORITY_INVALID, portCLEAR_INTERRUPT_MASK_FROM_ISR, portSET_INTERRUPT_MASK_FROM_ISR, prvAddTaskToReadyList, pxCurrentTCB, taskNOTIFICATION_RECEIVED, taskWAITING_NOTIFICATION, traceTASK_NOTIFY_FROM_ISR, tskTaskControlBlock::ucNotifyState, tskTaskControlBlock::ulNotifiedValue, uxListRemove(), tskTaskControlBlock::uxPriority, uxSchedulerSuspended, vListInsertEnd(), tskTaskControlBlock::xEventListItem, xPendingReadyList, tskTaskControlBlock::xStateListItem, and xYieldPending.
TaskHandle_t xTaskGetCurrentTaskHandle | ( | void | ) |
References pxCurrentTCB.
Referenced by xQueueGiveMutexRecursive(), xQueueTakeMutexRecursive(), xStreamBufferReceive(), and xStreamBufferSend().
BaseType_t xTaskGetSchedulerState | ( | void | ) |
TickType_t xTaskGetTickCount | ( | void | ) |
References portTICK_TYPE_ENTER_CRITICAL, portTICK_TYPE_EXIT_CRITICAL, and xTickCount.
Referenced by prvSampleTimeNow().
TickType_t xTaskGetTickCountFromISR | ( | void | ) |
BaseType_t xTaskIncrementTick | ( | void | ) |
References listCURRENT_LIST_LENGTH, listGET_LIST_ITEM_VALUE, listGET_OWNER_OF_HEAD_ENTRY, listLIST_IS_EMPTY, listLIST_ITEM_CONTAINER, mtCOVERAGE_TEST_MARKER, pdFALSE, pdTRUE, prvAddTaskToReadyList, pxCurrentTCB, pxDelayedTaskList, pxReadyTasksLists, taskSWITCH_DELAYED_LISTS, traceTASK_INCREMENT_TICK, uxListRemove(), uxPendedTicks, tskTaskControlBlock::uxPriority, uxSchedulerSuspended, vApplicationTickHook(), tskTaskControlBlock::xEventListItem, xNextTaskUnblockTime, tskTaskControlBlock::xStateListItem, xTickCount, and xYieldPending.
Referenced by xTaskResumeAll().
BaseType_t xTaskNotifyStateClear | ( | TaskHandle_t | xTask | ) |
References pdFAIL, pdPASS, prvGetTCBFromHandle, taskENTER_CRITICAL, taskEXIT_CRITICAL, taskNOT_WAITING_NOTIFICATION, taskNOTIFICATION_RECEIVED, and tskTaskControlBlock::ucNotifyState.
Referenced by xStreamBufferReceive(), and xStreamBufferSend().
BaseType_t xTaskNotifyWait | ( | uint32_t | ulBitsToClearOnEntry, |
uint32_t | ulBitsToClearOnExit, | ||
uint32_t * | pulNotificationValue, | ||
TickType_t | xTicksToWait | ||
) |
References mtCOVERAGE_TEST_MARKER, pdFALSE, pdTRUE, portYIELD_WITHIN_API, prvAddCurrentTaskToDelayedList(), pxCurrentTCB, taskENTER_CRITICAL, taskEXIT_CRITICAL, taskNOT_WAITING_NOTIFICATION, taskNOTIFICATION_RECEIVED, taskWAITING_NOTIFICATION, traceTASK_NOTIFY_WAIT, traceTASK_NOTIFY_WAIT_BLOCK, tskTaskControlBlock::ucNotifyState, and tskTaskControlBlock::ulNotifiedValue.
Referenced by xStreamBufferReceive(), and xStreamBufferSend().
BaseType_t xTaskPriorityDisinherit | ( | TaskHandle_t const | pxMutexHolder | ) |
References configASSERT, configMAX_PRIORITIES, listSET_LIST_ITEM_VALUE, mtCOVERAGE_TEST_MARKER, pdFALSE, pdTRUE, prvAddTaskToReadyList, pxCurrentTCB, taskRESET_READY_PRIORITY, traceTASK_PRIORITY_DISINHERIT, tskTaskControlBlock::uxBasePriority, uxListRemove(), tskTaskControlBlock::uxMutexesHeld, tskTaskControlBlock::uxPriority, tskTaskControlBlock::xEventListItem, and tskTaskControlBlock::xStateListItem.
Referenced by prvCopyDataToQueue().
BaseType_t xTaskPriorityInherit | ( | TaskHandle_t const | pxMutexHolder | ) |
References configMAX_PRIORITIES, listGET_LIST_ITEM_VALUE, listIS_CONTAINED_WITHIN, listSET_LIST_ITEM_VALUE, mtCOVERAGE_TEST_MARKER, pdFALSE, pdTRUE, prvAddTaskToReadyList, pxCurrentTCB, pxReadyTasksLists, taskEVENT_LIST_ITEM_VALUE_IN_USE, taskRESET_READY_PRIORITY, traceTASK_PRIORITY_INHERIT, tskTaskControlBlock::uxBasePriority, uxListRemove(), tskTaskControlBlock::uxPriority, tskTaskControlBlock::xEventListItem, and tskTaskControlBlock::xStateListItem.
Referenced by xQueueSemaphoreTake().
BaseType_t xTaskRemoveFromEventList | ( | const List_t *const | pxEventList | ) |
References configASSERT, listGET_OWNER_OF_HEAD_ENTRY, pdFALSE, pdTRUE, prvAddTaskToReadyList, prvResetNextTaskUnblockTime(), pxCurrentTCB, uxListRemove(), tskTaskControlBlock::uxPriority, uxSchedulerSuspended, vListInsertEnd(), tskTaskControlBlock::xEventListItem, xPendingReadyList, tskTaskControlBlock::xStateListItem, and xYieldPending.
Referenced by prvNotifyQueueSetContainer(), prvUnlockQueue(), xQueueGenericReset(), xQueueGenericSend(), xQueueGenericSendFromISR(), xQueueGiveFromISR(), xQueuePeek(), xQueueReceive(), xQueueReceiveFromISR(), and xQueueSemaphoreTake().
BaseType_t xTaskResumeAll | ( | void | ) |
References configASSERT, listGET_OWNER_OF_HEAD_ENTRY, listLIST_IS_EMPTY, mtCOVERAGE_TEST_MARKER, pdFALSE, pdTRUE, prvAddTaskToReadyList, prvResetNextTaskUnblockTime(), pxCurrentTCB, taskENTER_CRITICAL, taskEXIT_CRITICAL, taskYIELD_IF_USING_PREEMPTION, uxCurrentNumberOfTasks, uxListRemove(), uxPendedTicks, tskTaskControlBlock::uxPriority, uxSchedulerSuspended, tskTaskControlBlock::xEventListItem, xPendingReadyList, tskTaskControlBlock::xStateListItem, xTaskIncrementTick(), and xYieldPending.
Referenced by portTASK_FUNCTION(), prvProcessTimerOrBlockTask(), pvPortMalloc(), uxTaskGetSystemState(), vEventGroupDelete(), vPortFree(), vTaskDelay(), vTaskDelayUntil(), vTaskGetInfo(), xEventGroupSetBits(), xEventGroupSync(), xEventGroupWaitBits(), xQueueGenericSend(), xQueuePeek(), xQueueReceive(), and xQueueSemaphoreTake().
BaseType_t xTaskResumeFromISR | ( | TaskHandle_t | xTaskToResume | ) |
References configASSERT, mtCOVERAGE_TEST_MARKER, pdFALSE, pdTRUE, portASSERT_IF_INTERRUPT_PRIORITY_INVALID, portCLEAR_INTERRUPT_MASK_FROM_ISR, portSET_INTERRUPT_MASK_FROM_ISR, prvAddTaskToReadyList, prvTaskIsTaskSuspended(), pxCurrentTCB, traceTASK_RESUME_FROM_ISR, uxListRemove(), tskTaskControlBlock::uxPriority, uxSchedulerSuspended, vListInsertEnd(), tskTaskControlBlock::xEventListItem, xPendingReadyList, and tskTaskControlBlock::xStateListItem.
PRIVILEGED_DATA TCB_t* volatile pxCurrentTCB = NULL |
Referenced by eTaskGetState(), prvAddCurrentTaskToDelayedList(), prvAddNewTaskToReadyList(), pvTaskIncrementMutexHeldCount(), ulTaskNotifyTake(), uxTaskResetEventItemValue(), vTaskDelete(), vTaskGetInfo(), vTaskNotifyGiveFromISR(), vTaskPlaceOnEventList(), vTaskPlaceOnEventListRestricted(), vTaskPlaceOnUnorderedEventList(), vTaskPriorityDisinheritAfterTimeout(), vTaskPrioritySet(), vTaskRemoveFromUnorderedEventList(), vTaskResume(), vTaskStartScheduler(), vTaskSuspend(), vTaskSwitchContext(), xTaskCheckForTimeOut(), xTaskGenericNotify(), xTaskGenericNotifyFromISR(), xTaskGetCurrentTaskHandle(), xTaskIncrementTick(), xTaskNotifyWait(), xTaskPriorityDisinherit(), xTaskPriorityInherit(), xTaskRemoveFromEventList(), xTaskResumeAll(), and xTaskResumeFromISR().
|
static |
|
static |
Referenced by eTaskGetState(), prvAddCurrentTaskToDelayedList(), prvInitialiseTaskLists(), and uxTaskGetSystemState().
|
static |
|
static |
|
static |
Referenced by prvCheckTasksWaitingTermination(), and vTaskDelete().
|
static |
Referenced by xTaskIncrementTick(), and xTaskResumeAll().
|
static |
Referenced by vTaskDelay(), vTaskDelayUntil(), vTaskDelete(), vTaskNotifyGiveFromISR(), vTaskPlaceOnUnorderedEventList(), vTaskRemoveFromUnorderedEventList(), vTaskSuspend(), vTaskSuspendAll(), vTaskSwitchContext(), xTaskGenericNotifyFromISR(), xTaskGetSchedulerState(), xTaskIncrementTick(), xTaskRemoveFromEventList(), xTaskResumeAll(), and xTaskResumeFromISR().
|
static |
Referenced by prvAddNewTaskToReadyList(), and vTaskDelete().
|
static |
Referenced by prvAddCurrentTaskToDelayedList(), and vTaskPrioritySet().
|
static |
Referenced by prvInitialiseTaskLists().
|
static |
Referenced by prvInitialiseTaskLists().
|
static |
Referenced by vTaskStartScheduler().
|
static |
|
static |
Referenced by vTaskInternalSetTimeOutState(), vTaskSetTimeOutState(), and xTaskCheckForTimeOut().
|
static |
|
static |
|
static |
|
static |
Referenced by eTaskGetState(), prvCheckTasksWaitingTermination(), prvInitialiseTaskLists(), uxTaskGetSystemState(), and vTaskDelete().
|
static |
Referenced by portTASK_FUNCTION(), prvAddCurrentTaskToDelayedList(), vTaskDelayUntil(), vTaskInternalSetTimeOutState(), vTaskPlaceOnEventListRestricted(), vTaskSetTimeOutState(), vTaskStartScheduler(), xTaskCheckForTimeOut(), xTaskGetTickCount(), xTaskGetTickCountFromISR(), and xTaskIncrementTick().
|
static |