Add vTaskGetTaskInfo() function that allows a TaskStatus_t structure to be returned for an individual task (previously information could only be obtained for all the tasks at once).

Add a member to the TaskStatus_t structure that is used to return the base address of the stack used by the task being queried.
Add xTaskGetTaskHandle() that allows the handle of a task to be looked up from the task's text name.
Continue to document the macros that allow RTOS objects to be created using statically allocated memory.
Introduced vApplicationDaemonTaskStartupHook(), which allows initialisation that that needs to be executed after the scheduler has been started to be executed from the RTOS daemon task.
Call prvResetNextTaskUnblockTime() in xTaskResumeAll() if a task is moved from the pending ready list - this can prevent an unnecessary wake from sleep mode if a task is unblocked by an interrupt while in a low power tickless state.
This commit is contained in:
Richard Barry 2016-01-28 16:59:57 +00:00
parent b514f4fa4e
commit 802af0150c
11 changed files with 838 additions and 147 deletions

View file

@ -229,9 +229,13 @@ typedef void * QueueSetMemberHandle_t;
* hold the queue's data structure, removing the need for the memory to be
* allocated dynamically.
*
* @return If the queue is successfully create then a handle to the newly
* created queue is returned. If the queue cannot be created then 0 is
* returned.
* @return If neither pucQueueStorageBuffer or pxQueueBuffer are NULL, then the
* function will not attempt any dynamic memory allocation, and a handle to the
* created queue will always be returned. If pucQueueStorageBuffer or
* pxQueueBuffer is NULL then the function will attempt to dynamically allocate
* one of both buffers. In this case, if the allocation succeeds then a handle
* to the created queue will be returned, and if one of the the allocation fails
* NULL will be returned.
*
* Example usage:
<pre>
@ -245,7 +249,7 @@ typedef void * QueueSetMemberHandle_t;
#define ITEM_SIZE sizeof( uint32_t )
// xQueueBuffer will hold the queue structure.
StaticQueue_t xQueueBuffer;
StaticQueue_t xQueueBuffer;
// ucQueueStorage will hold the items posted to the queue. Must be at least
// [(queue length) * ( queue item size)] bytes long.
@ -267,7 +271,7 @@ typedef void * QueueSetMemberHandle_t;
// ... Rest of task code.
}
</pre>
* \defgroup xQueueCreate xQueueCreate
* \defgroup xQueueCreateStatic xQueueCreateStatic
* \ingroup QueueManagement
*/
#if( configSUPPORT_STATIC_ALLOCATION == 1 )
@ -1649,7 +1653,7 @@ BaseType_t xQueueGiveMutexRecursive( QueueHandle_t pxMutex ) PRIVILEGED_FUNCTION
* returned.
*/
#if( configQUEUE_REGISTRY_SIZE > 0 )
const char *pcQueueGetQueueName( QueueHandle_t xQueue );
const char *pcQueueGetQueueName( QueueHandle_t xQueue ); /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
#endif
/*