mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-01 19:54:32 +02:00
freertos: Add GetStaticBuffer functions
This commit adds the various ...GetStaticBuffer() functions from upstream FreeRTOS. See https://github.com/FreeRTOS/FreeRTOS-Kernel/pull/641 for more details.
This commit is contained in:
@@ -665,6 +665,42 @@ void vEventGroupDelete( EventGroupHandle_t xEventGroup )
|
|||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
BaseType_t xEventGroupGetStaticBuffer( EventGroupHandle_t xEventGroup,
|
||||||
|
StaticEventGroup_t ** ppxEventGroupBuffer )
|
||||||
|
{
|
||||||
|
BaseType_t xReturn;
|
||||||
|
EventGroup_t * pxEventBits = xEventGroup;
|
||||||
|
|
||||||
|
configASSERT( pxEventBits );
|
||||||
|
configASSERT( ppxEventGroupBuffer );
|
||||||
|
|
||||||
|
#if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
|
||||||
|
{
|
||||||
|
/* Check if the event group was statically allocated. */
|
||||||
|
if( pxEventBits->ucStaticallyAllocated == ( uint8_t ) pdTRUE )
|
||||||
|
{
|
||||||
|
*ppxEventGroupBuffer = ( StaticEventGroup_t * ) pxEventBits;
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else /* configSUPPORT_DYNAMIC_ALLOCATION */
|
||||||
|
{
|
||||||
|
/* Event group must have been statically allocated. */
|
||||||
|
*ppxEventGroupBuffer = ( StaticEventGroup_t * ) pxEventBits;
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
}
|
||||||
|
#endif /* configSUPPORT_DYNAMIC_ALLOCATION */
|
||||||
|
|
||||||
|
return xReturn;
|
||||||
|
}
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* For internal use only - execute a 'set bits' command that was pended from
|
/* For internal use only - execute a 'set bits' command that was pended from
|
||||||
* an interrupt. */
|
* an interrupt. */
|
||||||
portTIMER_CALLBACK_ATTRIBUTE
|
portTIMER_CALLBACK_ATTRIBUTE
|
||||||
|
@@ -753,6 +753,28 @@ EventBits_t xEventGroupGetBitsFromISR( EventGroupHandle_t xEventGroup ) PRIVILEG
|
|||||||
*/
|
*/
|
||||||
void vEventGroupDelete( EventGroupHandle_t xEventGroup ) PRIVILEGED_FUNCTION;
|
void vEventGroupDelete( EventGroupHandle_t xEventGroup ) PRIVILEGED_FUNCTION;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* event_groups.h
|
||||||
|
* @code{c}
|
||||||
|
* BaseType_t xEventGroupGetStaticBuffer( EventGroupHandle_t xEventGroup,
|
||||||
|
* StaticEventGroup_t ** ppxEventGroupBuffer );
|
||||||
|
* @endcode
|
||||||
|
*
|
||||||
|
* Retrieve a pointer to a statically created event groups's data structure
|
||||||
|
* buffer. It is the same buffer that is supplied at the time of creation.
|
||||||
|
*
|
||||||
|
* @param xEventGroup The event group for which to retrieve the buffer.
|
||||||
|
*
|
||||||
|
* @param ppxEventGroupBuffer Used to return a pointer to the event groups's
|
||||||
|
* data structure buffer.
|
||||||
|
*
|
||||||
|
* @return pdTRUE if the buffer was retrieved, pdFALSE otherwise.
|
||||||
|
*/
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
BaseType_t xEventGroupGetStaticBuffer( EventGroupHandle_t xEventGroup,
|
||||||
|
StaticEventGroup_t ** ppxEventGroupBuffer ) PRIVILEGED_FUNCTION;
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
|
||||||
/* For internal use only. */
|
/* For internal use only. */
|
||||||
void vEventGroupSetBitsCallback( void * pvEventGroup,
|
void vEventGroupSetBitsCallback( void * pvEventGroup,
|
||||||
const uint32_t ulBitsToSet ) PRIVILEGED_FUNCTION;
|
const uint32_t ulBitsToSet ) PRIVILEGED_FUNCTION;
|
||||||
|
@@ -210,6 +210,37 @@ typedef void * MessageBufferHandle_t;
|
|||||||
#define xMessageBufferCreateStatic( xBufferSizeBytes, pucMessageBufferStorageArea, pxStaticMessageBuffer ) \
|
#define xMessageBufferCreateStatic( xBufferSizeBytes, pucMessageBufferStorageArea, pxStaticMessageBuffer ) \
|
||||||
( MessageBufferHandle_t ) xStreamBufferGenericCreateStatic( xBufferSizeBytes, 0, pdTRUE, pucMessageBufferStorageArea, pxStaticMessageBuffer )
|
( MessageBufferHandle_t ) xStreamBufferGenericCreateStatic( xBufferSizeBytes, 0, pdTRUE, pucMessageBufferStorageArea, pxStaticMessageBuffer )
|
||||||
|
|
||||||
|
/**
|
||||||
|
* message_buffer.h
|
||||||
|
*
|
||||||
|
* @code{c}
|
||||||
|
* BaseType_t xMessageBufferGetStaticBuffers( MessageBufferHandle_t xMessageBuffer,
|
||||||
|
* uint8_t ** ppucMessageBufferStorageArea,
|
||||||
|
* StaticMessageBuffer_t ** ppxStaticMessageBuffer );
|
||||||
|
* @endcode
|
||||||
|
*
|
||||||
|
* Retrieve pointers to a statically created message buffer's data structure
|
||||||
|
* buffer and storage area buffer. These are the same buffers that are supplied
|
||||||
|
* at the time of creation.
|
||||||
|
*
|
||||||
|
* @param xMessageBuffer The message buffer for which to retrieve the buffers.
|
||||||
|
*
|
||||||
|
* @param ppucMessageBufferStorageArea Used to return a pointer to the
|
||||||
|
* message buffer's storage area buffer.
|
||||||
|
*
|
||||||
|
* @param ppxStaticMessageBuffer Used to return a pointer to the message
|
||||||
|
* buffer's data structure buffer.
|
||||||
|
*
|
||||||
|
* @return pdTRUE if buffers were retrieved, pdFALSE otherwise..
|
||||||
|
*
|
||||||
|
* \defgroup xMessageBufferGetStaticBuffers xMessageBufferGetStaticBuffers
|
||||||
|
* \ingroup MessageBufferManagement
|
||||||
|
*/
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
#define xMessageBufferGetStaticBuffers( xMessageBuffer, ppucMessageBufferStorageArea, ppxStaticMessageBuffer ) \
|
||||||
|
xStreamBufferGetStaticBuffers( ( xMessageBuffer ), ( ppucMessageBufferStorageArea ), ( ppxStaticMessageBuffer ) )
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* message_buffer.h
|
* message_buffer.h
|
||||||
*
|
*
|
||||||
|
@@ -233,6 +233,35 @@ typedef struct QueueDefinition * QueueSetMemberHandle_t;
|
|||||||
#define xQueueCreateStatic( uxQueueLength, uxItemSize, pucQueueStorage, pxQueueBuffer ) xQueueGenericCreateStatic( ( uxQueueLength ), ( uxItemSize ), ( pucQueueStorage ), ( pxQueueBuffer ), ( queueQUEUE_TYPE_BASE ) )
|
#define xQueueCreateStatic( uxQueueLength, uxItemSize, pucQueueStorage, pxQueueBuffer ) xQueueGenericCreateStatic( ( uxQueueLength ), ( uxItemSize ), ( pucQueueStorage ), ( pxQueueBuffer ), ( queueQUEUE_TYPE_BASE ) )
|
||||||
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* queue. h
|
||||||
|
* @code{c}
|
||||||
|
* BaseType_t xQueueGetStaticBuffers( QueueHandle_t xQueue,
|
||||||
|
* uint8_t ** ppucQueueStorage,
|
||||||
|
* StaticQueue_t ** ppxStaticQueue );
|
||||||
|
* @endcode
|
||||||
|
*
|
||||||
|
* Retrieve pointers to a statically created queue's data structure buffer
|
||||||
|
* and storage area buffer. These are the same buffers that are supplied
|
||||||
|
* at the time of creation.
|
||||||
|
*
|
||||||
|
* @param xQueue The queue for which to retrieve the buffers.
|
||||||
|
*
|
||||||
|
* @param ppucQueueStorage Used to return a pointer to the queue's storage
|
||||||
|
* area buffer.
|
||||||
|
*
|
||||||
|
* @param ppxStaticQueue Used to return a pointer to the queue's data
|
||||||
|
* structure buffer.
|
||||||
|
*
|
||||||
|
* @return pdTRUE if buffers were retrieved, pdFALSE otherwise.
|
||||||
|
*
|
||||||
|
* \defgroup xQueueGetStaticBuffers xQueueGetStaticBuffers
|
||||||
|
* \ingroup QueueManagement
|
||||||
|
*/
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
#define xQueueGetStaticBuffers( xQueue, ppucQueueStorage, ppxStaticQueue ) xQueueGenericGetStaticBuffers( ( xQueue ), ( ppucQueueStorage ), ( ppxStaticQueue ) )
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* queue. h
|
* queue. h
|
||||||
* <pre>
|
* <pre>
|
||||||
@@ -1558,6 +1587,18 @@ BaseType_t xQueueGiveMutexRecursive( QueueHandle_t xMutex ) PRIVILEGED_FUNCTION;
|
|||||||
const uint8_t ucQueueType ) PRIVILEGED_FUNCTION;
|
const uint8_t ucQueueType ) PRIVILEGED_FUNCTION;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Generic version of the function used to retrieve the buffers of statically
|
||||||
|
* created queues. This is called by other functions and macros that retrieve
|
||||||
|
* the buffers of other statically created RTOS objects that use the queue
|
||||||
|
* structure as their base.
|
||||||
|
*/
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
BaseType_t xQueueGenericGetStaticBuffers( QueueHandle_t xQueue,
|
||||||
|
uint8_t ** ppucQueueStorage,
|
||||||
|
StaticQueue_t ** ppxStaticQueue ) PRIVILEGED_FUNCTION;
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Queue sets provide a mechanism to allow a task to block (pend) on a read
|
* Queue sets provide a mechanism to allow a task to block (pend) on a read
|
||||||
* operation from multiple queues or semaphores simultaneously.
|
* operation from multiple queues or semaphores simultaneously.
|
||||||
|
@@ -1170,4 +1170,25 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
|||||||
*/
|
*/
|
||||||
#define uxSemaphoreGetCount( xSemaphore ) uxQueueMessagesWaiting( ( QueueHandle_t ) ( xSemaphore ) )
|
#define uxSemaphoreGetCount( xSemaphore ) uxQueueMessagesWaiting( ( QueueHandle_t ) ( xSemaphore ) )
|
||||||
|
|
||||||
|
/**
|
||||||
|
* semphr.h
|
||||||
|
* @code{c}
|
||||||
|
* BaseType_t xSemaphoreGetStaticBuffer( SemaphoreHandle_t xSemaphore );
|
||||||
|
* @endcode
|
||||||
|
*
|
||||||
|
* Retrieve pointer to a statically created binary semaphore, counting semaphore,
|
||||||
|
* or mutex semaphore's data structure buffer. This is the same buffer that is
|
||||||
|
* supplied at the time of creation.
|
||||||
|
*
|
||||||
|
* @param xSemaphore The semaphore for which to retrieve the buffer.
|
||||||
|
*
|
||||||
|
* @param ppxSemaphoreBuffer Used to return a pointer to the semaphore's
|
||||||
|
* data structure buffer.
|
||||||
|
*
|
||||||
|
* @return pdTRUE if buffer was retrieved, pdFALSE otherwise.
|
||||||
|
*/
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
#define xSemaphoreGetStaticBuffer( xSemaphore, ppxSemaphoreBuffer ) xQueueGenericGetStaticBuffers( ( QueueHandle_t ) ( xSemaphore ), NULL, ( ppxSemaphoreBuffer ) )
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
|
||||||
#endif /* SEMAPHORE_H */
|
#endif /* SEMAPHORE_H */
|
||||||
|
@@ -219,6 +219,38 @@ typedef struct StreamBufferDef_t * StreamBufferHandle_t;
|
|||||||
#define xStreamBufferCreateStatic( xBufferSizeBytes, xTriggerLevelBytes, pucStreamBufferStorageArea, pxStaticStreamBuffer ) \
|
#define xStreamBufferCreateStatic( xBufferSizeBytes, xTriggerLevelBytes, pucStreamBufferStorageArea, pxStaticStreamBuffer ) \
|
||||||
xStreamBufferGenericCreateStatic( xBufferSizeBytes, xTriggerLevelBytes, pdFALSE, pucStreamBufferStorageArea, pxStaticStreamBuffer )
|
xStreamBufferGenericCreateStatic( xBufferSizeBytes, xTriggerLevelBytes, pdFALSE, pucStreamBufferStorageArea, pxStaticStreamBuffer )
|
||||||
|
|
||||||
|
/**
|
||||||
|
* stream_buffer.h
|
||||||
|
*
|
||||||
|
* @code{c}
|
||||||
|
* BaseType_t xStreamBufferGetStaticBuffers( StreamBufferHandle_t xStreamBuffer,
|
||||||
|
* uint8_t ** ppucStreamBufferStorageArea,
|
||||||
|
* StaticStreamBuffer_t ** ppxStaticStreamBuffer );
|
||||||
|
* @endcode
|
||||||
|
*
|
||||||
|
* Retrieve pointers to a statically created stream buffer's data structure
|
||||||
|
* buffer and storage area buffer. These are the same buffers that are supplied
|
||||||
|
* at the time of creation.
|
||||||
|
*
|
||||||
|
* @param xStreamBuffer The stream buffer for which to retrieve the buffers.
|
||||||
|
*
|
||||||
|
* @param ppucStreamBufferStorageArea Used to return a pointer to the stream
|
||||||
|
* buffer's storage area buffer.
|
||||||
|
*
|
||||||
|
* @param ppxStaticStreamBuffer Used to return a pointer to the stream
|
||||||
|
* buffer's data structure buffer.
|
||||||
|
*
|
||||||
|
* @return pdTRUE if buffers were retrieved, pdFALSE otherwise.
|
||||||
|
*
|
||||||
|
* \defgroup xStreamBufferGetStaticBuffers xStreamBufferGetStaticBuffers
|
||||||
|
* \ingroup StreamBufferManagement
|
||||||
|
*/
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
BaseType_t xStreamBufferGetStaticBuffers( StreamBufferHandle_t xStreamBuffer,
|
||||||
|
uint8_t ** ppucStreamBufferStorageArea,
|
||||||
|
StaticStreamBuffer_t ** ppxStaticStreamBuffer ) PRIVILEGED_FUNCTION;
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* stream_buffer.h
|
* stream_buffer.h
|
||||||
*
|
*
|
||||||
|
@@ -1704,6 +1704,36 @@ char * pcTaskGetName( TaskHandle_t xTaskToQuery ) PRIVILEGED_FUNCTION; /*lin
|
|||||||
*/
|
*/
|
||||||
TaskHandle_t xTaskGetHandle( const char * pcNameToQuery ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
|
TaskHandle_t xTaskGetHandle( const char * pcNameToQuery ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* task. h
|
||||||
|
* @code{c}
|
||||||
|
* BaseType_t xTaskGetStaticBuffers( TaskHandle_t xTask,
|
||||||
|
* StackType_t ** ppuxStackBuffer,
|
||||||
|
* StaticTask_t ** ppxTaskBuffer );
|
||||||
|
* @endcode
|
||||||
|
*
|
||||||
|
* Retrieve pointers to a statically created task's data structure
|
||||||
|
* buffer and stack buffer. These are the same buffers that are supplied
|
||||||
|
* at the time of creation.
|
||||||
|
*
|
||||||
|
* @param xTask The task for which to retrieve the buffers.
|
||||||
|
*
|
||||||
|
* @param ppuxStackBuffer Used to return a pointer to the task's stack buffer.
|
||||||
|
*
|
||||||
|
* @param ppxTaskBuffer Used to return a pointer to the task's data structure
|
||||||
|
* buffer.
|
||||||
|
*
|
||||||
|
* @return pdTRUE if buffers were retrieved, pdFALSE otherwise.
|
||||||
|
*
|
||||||
|
* \defgroup xTaskGetStaticBuffers xTaskGetStaticBuffers
|
||||||
|
* \ingroup TaskUtils
|
||||||
|
*/
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
BaseType_t xTaskGetStaticBuffers( TaskHandle_t xTask,
|
||||||
|
StackType_t ** ppuxStackBuffer,
|
||||||
|
StaticTask_t ** ppxTaskBuffer ) PRIVILEGED_FUNCTION;
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* task.h
|
* task.h
|
||||||
* <PRE>UBaseType_t uxTaskGetStackHighWaterMark( TaskHandle_t xTask );</PRE>
|
* <PRE>UBaseType_t uxTaskGetStackHighWaterMark( TaskHandle_t xTask );</PRE>
|
||||||
|
@@ -1307,6 +1307,25 @@ TickType_t xTimerGetPeriod( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION;
|
|||||||
*/
|
*/
|
||||||
TickType_t xTimerGetExpiryTime( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION;
|
TickType_t xTimerGetExpiryTime( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BaseType_t xTimerGetStaticBuffer( TimerHandle_t xTimer,
|
||||||
|
* StaticTimer_t ** ppxTimerBuffer );
|
||||||
|
*
|
||||||
|
* Retrieve pointer to a statically created timer's data structure
|
||||||
|
* buffer. This is the same buffer that is supplied at the time of
|
||||||
|
* creation.
|
||||||
|
*
|
||||||
|
* @param xTimer The timer for which to retrieve the buffer.
|
||||||
|
*
|
||||||
|
* @param ppxTimerBuffer Used to return a pointer to the timers's data
|
||||||
|
* structure buffer.
|
||||||
|
*
|
||||||
|
* @return pdTRUE if the buffer was retrieved, pdFALSE otherwise.
|
||||||
|
*/
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
BaseType_t xTimerGetStaticBuffer( TimerHandle_t xTimer,
|
||||||
|
StaticTimer_t ** ppxTimerBuffer ) PRIVILEGED_FUNCTION;
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
/*
|
/*
|
||||||
* Functions beyond this part are not part of the public API and are intended
|
* Functions beyond this part are not part of the public API and are intended
|
||||||
* for use by the kernel only.
|
* for use by the kernel only.
|
||||||
|
@@ -379,6 +379,55 @@ BaseType_t xQueueGenericReset( QueueHandle_t xQueue,
|
|||||||
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
|
||||||
|
BaseType_t xQueueGenericGetStaticBuffers( QueueHandle_t xQueue,
|
||||||
|
uint8_t ** ppucQueueStorage,
|
||||||
|
StaticQueue_t ** ppxStaticQueue )
|
||||||
|
{
|
||||||
|
BaseType_t xReturn;
|
||||||
|
Queue_t * const pxQueue = xQueue;
|
||||||
|
|
||||||
|
configASSERT( pxQueue );
|
||||||
|
configASSERT( ppxStaticQueue );
|
||||||
|
|
||||||
|
#if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
|
||||||
|
{
|
||||||
|
/* Check if the queue was statically allocated. */
|
||||||
|
if( pxQueue->ucStaticallyAllocated == ( uint8_t ) pdTRUE )
|
||||||
|
{
|
||||||
|
if( ppucQueueStorage != NULL )
|
||||||
|
{
|
||||||
|
*ppucQueueStorage = ( uint8_t * ) pxQueue->pcHead;
|
||||||
|
}
|
||||||
|
|
||||||
|
*ppxStaticQueue = ( StaticQueue_t * ) pxQueue;
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else /* configSUPPORT_DYNAMIC_ALLOCATION */
|
||||||
|
{
|
||||||
|
/* Queue must have been statically allocated. */
|
||||||
|
if( ppucQueueStorage != NULL )
|
||||||
|
{
|
||||||
|
*ppucQueueStorage = ( uint8_t * ) pxQueue->pcHead;
|
||||||
|
}
|
||||||
|
|
||||||
|
*ppxStaticQueue = ( StaticQueue_t * ) pxQueue;
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
}
|
||||||
|
#endif /* configSUPPORT_DYNAMIC_ALLOCATION */
|
||||||
|
|
||||||
|
return xReturn;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
|
#if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
|
||||||
|
|
||||||
QueueHandle_t xQueueGenericCreate( const UBaseType_t uxQueueLength,
|
QueueHandle_t xQueueGenericCreate( const UBaseType_t uxQueueLength,
|
||||||
|
@@ -367,6 +367,34 @@ static void prvInitialiseNewStreamBuffer( StreamBuffer_t * const pxStreamBuffer,
|
|||||||
#endif /* ( configSUPPORT_STATIC_ALLOCATION == 1 ) */
|
#endif /* ( configSUPPORT_STATIC_ALLOCATION == 1 ) */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
BaseType_t xStreamBufferGetStaticBuffers( StreamBufferHandle_t xStreamBuffer,
|
||||||
|
uint8_t ** ppucStreamBufferStorageArea,
|
||||||
|
StaticStreamBuffer_t ** ppxStaticStreamBuffer )
|
||||||
|
{
|
||||||
|
BaseType_t xReturn;
|
||||||
|
const StreamBuffer_t * const pxStreamBuffer = xStreamBuffer;
|
||||||
|
|
||||||
|
configASSERT( pxStreamBuffer );
|
||||||
|
configASSERT( ppucStreamBufferStorageArea );
|
||||||
|
configASSERT( ppxStaticStreamBuffer );
|
||||||
|
|
||||||
|
if( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_STATICALLY_ALLOCATED ) != ( uint8_t ) 0 )
|
||||||
|
{
|
||||||
|
*ppucStreamBufferStorageArea = pxStreamBuffer->pucBuffer;
|
||||||
|
*ppxStaticStreamBuffer = ( StaticStreamBuffer_t * ) pxStreamBuffer;
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return xReturn;
|
||||||
|
}
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer )
|
void vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer )
|
||||||
{
|
{
|
||||||
StreamBuffer_t * pxStreamBuffer = xStreamBuffer;
|
StreamBuffer_t * pxStreamBuffer = xStreamBuffer;
|
||||||
|
@@ -3359,6 +3359,53 @@ char * pcTaskGetName( TaskHandle_t xTaskToQuery ) /*lint !e971 Unqualified char
|
|||||||
#endif /* INCLUDE_xTaskGetHandle */
|
#endif /* INCLUDE_xTaskGetHandle */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
|
||||||
|
BaseType_t xTaskGetStaticBuffers( TaskHandle_t xTask,
|
||||||
|
StackType_t ** ppuxStackBuffer,
|
||||||
|
StaticTask_t ** ppxTaskBuffer )
|
||||||
|
{
|
||||||
|
BaseType_t xReturn;
|
||||||
|
TCB_t * pxTCB;
|
||||||
|
|
||||||
|
configASSERT( ppuxStackBuffer != NULL );
|
||||||
|
configASSERT( ppxTaskBuffer != NULL );
|
||||||
|
|
||||||
|
pxTCB = prvGetTCBFromHandle( xTask );
|
||||||
|
|
||||||
|
#if ( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE == 1 )
|
||||||
|
{
|
||||||
|
if( pxTCB->ucStaticallyAllocated == tskSTATICALLY_ALLOCATED_STACK_AND_TCB )
|
||||||
|
{
|
||||||
|
*ppuxStackBuffer = pxTCB->pxStack;
|
||||||
|
*ppxTaskBuffer = ( StaticTask_t * ) pxTCB;
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
}
|
||||||
|
else if( pxTCB->ucStaticallyAllocated == tskSTATICALLY_ALLOCATED_STACK_ONLY )
|
||||||
|
{
|
||||||
|
*ppuxStackBuffer = pxTCB->pxStack;
|
||||||
|
*ppxTaskBuffer = NULL;
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else /* tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE == 1 */
|
||||||
|
{
|
||||||
|
*ppuxStackBuffer = pxTCB->pxStack;
|
||||||
|
*ppxTaskBuffer = ( StaticTask_t * ) pxTCB;
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
}
|
||||||
|
#endif /* tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE == 1 */
|
||||||
|
|
||||||
|
return xReturn;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#if ( configUSE_TRACE_FACILITY == 1 )
|
#if ( configUSE_TRACE_FACILITY == 1 )
|
||||||
|
|
||||||
UBaseType_t uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray,
|
UBaseType_t uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray,
|
||||||
|
@@ -534,6 +534,30 @@
|
|||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
BaseType_t xTimerGetStaticBuffer( TimerHandle_t xTimer,
|
||||||
|
StaticTimer_t ** ppxTimerBuffer )
|
||||||
|
{
|
||||||
|
BaseType_t xReturn;
|
||||||
|
Timer_t * pxTimer = xTimer;
|
||||||
|
|
||||||
|
configASSERT( ppxTimerBuffer != NULL );
|
||||||
|
|
||||||
|
if( ( pxTimer->ucStatus & tmrSTATUS_IS_STATICALLY_ALLOCATED ) != 0 )
|
||||||
|
{
|
||||||
|
*ppxTimerBuffer = ( StaticTimer_t * ) pxTimer;
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return xReturn;
|
||||||
|
}
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
const char * pcTimerGetName( TimerHandle_t xTimer ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
|
const char * pcTimerGetName( TimerHandle_t xTimer ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
|
||||||
{
|
{
|
||||||
Timer_t * pxTimer = xTimer;
|
Timer_t * pxTimer = xTimer;
|
||||||
|
@@ -702,6 +702,42 @@ void vEventGroupDelete( EventGroupHandle_t xEventGroup )
|
|||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
BaseType_t xEventGroupGetStaticBuffer( EventGroupHandle_t xEventGroup,
|
||||||
|
StaticEventGroup_t ** ppxEventGroupBuffer )
|
||||||
|
{
|
||||||
|
BaseType_t xReturn;
|
||||||
|
EventGroup_t * pxEventBits = xEventGroup;
|
||||||
|
|
||||||
|
configASSERT( pxEventBits );
|
||||||
|
configASSERT( ppxEventGroupBuffer );
|
||||||
|
|
||||||
|
#if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
|
||||||
|
{
|
||||||
|
/* Check if the event group was statically allocated. */
|
||||||
|
if( pxEventBits->ucStaticallyAllocated == ( uint8_t ) pdTRUE )
|
||||||
|
{
|
||||||
|
*ppxEventGroupBuffer = ( StaticEventGroup_t * ) pxEventBits;
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else /* configSUPPORT_DYNAMIC_ALLOCATION */
|
||||||
|
{
|
||||||
|
/* Event group must have been statically allocated. */
|
||||||
|
*ppxEventGroupBuffer = ( StaticEventGroup_t * ) pxEventBits;
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
}
|
||||||
|
#endif /* configSUPPORT_DYNAMIC_ALLOCATION */
|
||||||
|
|
||||||
|
return xReturn;
|
||||||
|
}
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* For internal use only - execute a 'set bits' command that was pended from
|
/* For internal use only - execute a 'set bits' command that was pended from
|
||||||
* an interrupt. */
|
* an interrupt. */
|
||||||
void vEventGroupSetBitsCallback( void * pvEventGroup,
|
void vEventGroupSetBitsCallback( void * pvEventGroup,
|
||||||
|
@@ -807,6 +807,30 @@ EventBits_t xEventGroupGetBitsFromISR( EventGroupHandle_t xEventGroup ) PRIVILEG
|
|||||||
*/
|
*/
|
||||||
void vEventGroupDelete( EventGroupHandle_t xEventGroup ) PRIVILEGED_FUNCTION;
|
void vEventGroupDelete( EventGroupHandle_t xEventGroup ) PRIVILEGED_FUNCTION;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||||
|
* event_groups.h
|
||||||
|
* @code{c}
|
||||||
|
* BaseType_t xEventGroupGetStaticBuffer( EventGroupHandle_t xEventGroup,
|
||||||
|
* StaticEventGroup_t ** ppxEventGroupBuffer );
|
||||||
|
* @endcode
|
||||||
|
* @endcond
|
||||||
|
*
|
||||||
|
* Retrieve a pointer to a statically created event groups's data structure
|
||||||
|
* buffer. It is the same buffer that is supplied at the time of creation.
|
||||||
|
*
|
||||||
|
* @param xEventGroup The event group for which to retrieve the buffer.
|
||||||
|
*
|
||||||
|
* @param ppxEventGroupBuffer Used to return a pointer to the event groups's
|
||||||
|
* data structure buffer.
|
||||||
|
*
|
||||||
|
* @return pdTRUE if the buffer was retrieved, pdFALSE otherwise.
|
||||||
|
*/
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
BaseType_t xEventGroupGetStaticBuffer( EventGroupHandle_t xEventGroup,
|
||||||
|
StaticEventGroup_t ** ppxEventGroupBuffer ) PRIVILEGED_FUNCTION;
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
|
||||||
/** @cond !DOC_EXCLUDE_HEADER_SECTION */
|
/** @cond !DOC_EXCLUDE_HEADER_SECTION */
|
||||||
|
|
||||||
/* For internal use only. */
|
/* For internal use only. */
|
||||||
|
@@ -226,6 +226,39 @@ typedef void * MessageBufferHandle_t;
|
|||||||
#define xMessageBufferCreateStatic( xBufferSizeBytes, pucMessageBufferStorageArea, pxStaticMessageBuffer ) \
|
#define xMessageBufferCreateStatic( xBufferSizeBytes, pucMessageBufferStorageArea, pxStaticMessageBuffer ) \
|
||||||
( MessageBufferHandle_t ) xStreamBufferGenericCreateStatic( xBufferSizeBytes, 0, pdTRUE, pucMessageBufferStorageArea, pxStaticMessageBuffer )
|
( MessageBufferHandle_t ) xStreamBufferGenericCreateStatic( xBufferSizeBytes, 0, pdTRUE, pucMessageBufferStorageArea, pxStaticMessageBuffer )
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||||
|
* message_buffer.h
|
||||||
|
*
|
||||||
|
* @code{c}
|
||||||
|
* BaseType_t xMessageBufferGetStaticBuffers( MessageBufferHandle_t xMessageBuffer,
|
||||||
|
* uint8_t ** ppucMessageBufferStorageArea,
|
||||||
|
* StaticMessageBuffer_t ** ppxStaticMessageBuffer );
|
||||||
|
* @endcode
|
||||||
|
* @endcond
|
||||||
|
*
|
||||||
|
* Retrieve pointers to a statically created message buffer's data structure
|
||||||
|
* buffer and storage area buffer. These are the same buffers that are supplied
|
||||||
|
* at the time of creation.
|
||||||
|
*
|
||||||
|
* @param xMessageBuffer The message buffer for which to retrieve the buffers.
|
||||||
|
*
|
||||||
|
* @param ppucMessageBufferStorageArea Used to return a pointer to the
|
||||||
|
* message buffer's storage area buffer.
|
||||||
|
*
|
||||||
|
* @param ppxStaticMessageBuffer Used to return a pointer to the message
|
||||||
|
* buffer's data structure buffer.
|
||||||
|
*
|
||||||
|
* @return pdTRUE if buffers were retrieved, pdFALSE otherwise..
|
||||||
|
*
|
||||||
|
* \defgroup xMessageBufferGetStaticBuffers xMessageBufferGetStaticBuffers
|
||||||
|
* \ingroup MessageBufferManagement
|
||||||
|
*/
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
#define xMessageBufferGetStaticBuffers( xMessageBuffer, ppucMessageBufferStorageArea, ppxStaticMessageBuffer ) \
|
||||||
|
xStreamBufferGetStaticBuffers( ( xMessageBuffer ), ( ppucMessageBufferStorageArea ), ( ppxStaticMessageBuffer ) )
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||||
* message_buffer.h
|
* message_buffer.h
|
||||||
|
@@ -252,6 +252,37 @@ typedef struct QueueDefinition * QueueSetMemberHandle_t;
|
|||||||
#define xQueueCreateStatic( uxQueueLength, uxItemSize, pucQueueStorage, pxQueueBuffer ) xQueueGenericCreateStatic( ( uxQueueLength ), ( uxItemSize ), ( pucQueueStorage ), ( pxQueueBuffer ), ( queueQUEUE_TYPE_BASE ) )
|
#define xQueueCreateStatic( uxQueueLength, uxItemSize, pucQueueStorage, pxQueueBuffer ) xQueueGenericCreateStatic( ( uxQueueLength ), ( uxItemSize ), ( pucQueueStorage ), ( pxQueueBuffer ), ( queueQUEUE_TYPE_BASE ) )
|
||||||
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||||
|
* queue. h
|
||||||
|
* @code{c}
|
||||||
|
* BaseType_t xQueueGetStaticBuffers( QueueHandle_t xQueue,
|
||||||
|
* uint8_t ** ppucQueueStorage,
|
||||||
|
* StaticQueue_t ** ppxStaticQueue );
|
||||||
|
* @endcode
|
||||||
|
* @endcond
|
||||||
|
*
|
||||||
|
* Retrieve pointers to a statically created queue's data structure buffer
|
||||||
|
* and storage area buffer. These are the same buffers that are supplied
|
||||||
|
* at the time of creation.
|
||||||
|
*
|
||||||
|
* @param xQueue The queue for which to retrieve the buffers.
|
||||||
|
*
|
||||||
|
* @param ppucQueueStorage Used to return a pointer to the queue's storage
|
||||||
|
* area buffer.
|
||||||
|
*
|
||||||
|
* @param ppxStaticQueue Used to return a pointer to the queue's data
|
||||||
|
* structure buffer.
|
||||||
|
*
|
||||||
|
* @return pdTRUE if buffers were retrieved, pdFALSE otherwise.
|
||||||
|
*
|
||||||
|
* \defgroup xQueueGetStaticBuffers xQueueGetStaticBuffers
|
||||||
|
* \ingroup QueueManagement
|
||||||
|
*/
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
#define xQueueGetStaticBuffers( xQueue, ppucQueueStorage, ppxStaticQueue ) xQueueGenericGetStaticBuffers( ( xQueue ), ( ppucQueueStorage ), ( ppxStaticQueue ) )
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||||
* queue. h
|
* queue. h
|
||||||
@@ -1649,6 +1680,18 @@ BaseType_t xQueueGiveMutexRecursive( QueueHandle_t xMutex ) PRIVILEGED_FUNCTION;
|
|||||||
const uint8_t ucQueueType ) PRIVILEGED_FUNCTION;
|
const uint8_t ucQueueType ) PRIVILEGED_FUNCTION;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Generic version of the function used to retrieve the buffers of statically
|
||||||
|
* created queues. This is called by other functions and macros that retrieve
|
||||||
|
* the buffers of other statically created RTOS objects that use the queue
|
||||||
|
* structure as their base.
|
||||||
|
*/
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
BaseType_t xQueueGenericGetStaticBuffers( QueueHandle_t xQueue,
|
||||||
|
uint8_t ** ppucQueueStorage,
|
||||||
|
StaticQueue_t ** ppxStaticQueue ) PRIVILEGED_FUNCTION;
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Queue sets provide a mechanism to allow a task to block (pend) on a read
|
* Queue sets provide a mechanism to allow a task to block (pend) on a read
|
||||||
* operation from multiple queues or semaphores simultaneously.
|
* operation from multiple queues or semaphores simultaneously.
|
||||||
|
@@ -1244,4 +1244,27 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
|||||||
*/
|
*/
|
||||||
#define uxSemaphoreGetCount( xSemaphore ) uxQueueMessagesWaiting( ( QueueHandle_t ) ( xSemaphore ) )
|
#define uxSemaphoreGetCount( xSemaphore ) uxQueueMessagesWaiting( ( QueueHandle_t ) ( xSemaphore ) )
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||||
|
* semphr.h
|
||||||
|
* @code{c}
|
||||||
|
* BaseType_t xSemaphoreGetStaticBuffer( SemaphoreHandle_t xSemaphore );
|
||||||
|
* @endcode
|
||||||
|
* @endcond
|
||||||
|
*
|
||||||
|
* Retrieve pointer to a statically created binary semaphore, counting semaphore,
|
||||||
|
* or mutex semaphore's data structure buffer. This is the same buffer that is
|
||||||
|
* supplied at the time of creation.
|
||||||
|
*
|
||||||
|
* @param xSemaphore The semaphore for which to retrieve the buffer.
|
||||||
|
*
|
||||||
|
* @param ppxSemaphoreBuffer Used to return a pointer to the semaphore's
|
||||||
|
* data structure buffer.
|
||||||
|
*
|
||||||
|
* @return pdTRUE if buffer was retrieved, pdFALSE otherwise.
|
||||||
|
*/
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
#define xSemaphoreGetStaticBuffer( xSemaphore, ppxSemaphoreBuffer ) xQueueGenericGetStaticBuffers( ( QueueHandle_t ) ( xSemaphore ), NULL, ( ppxSemaphoreBuffer ) )
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
|
||||||
#endif /* SEMAPHORE_H */
|
#endif /* SEMAPHORE_H */
|
||||||
|
@@ -236,6 +236,40 @@ typedef struct StreamBufferDef_t * StreamBufferHandle_t;
|
|||||||
#define xStreamBufferCreateStatic( xBufferSizeBytes, xTriggerLevelBytes, pucStreamBufferStorageArea, pxStaticStreamBuffer ) \
|
#define xStreamBufferCreateStatic( xBufferSizeBytes, xTriggerLevelBytes, pucStreamBufferStorageArea, pxStaticStreamBuffer ) \
|
||||||
xStreamBufferGenericCreateStatic( xBufferSizeBytes, xTriggerLevelBytes, pdFALSE, pucStreamBufferStorageArea, pxStaticStreamBuffer )
|
xStreamBufferGenericCreateStatic( xBufferSizeBytes, xTriggerLevelBytes, pdFALSE, pucStreamBufferStorageArea, pxStaticStreamBuffer )
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||||
|
* stream_buffer.h
|
||||||
|
*
|
||||||
|
* @code{c}
|
||||||
|
* BaseType_t xStreamBufferGetStaticBuffers( StreamBufferHandle_t xStreamBuffer,
|
||||||
|
* uint8_t ** ppucStreamBufferStorageArea,
|
||||||
|
* StaticStreamBuffer_t ** ppxStaticStreamBuffer );
|
||||||
|
* @endcode
|
||||||
|
* @endcond
|
||||||
|
*
|
||||||
|
* Retrieve pointers to a statically created stream buffer's data structure
|
||||||
|
* buffer and storage area buffer. These are the same buffers that are supplied
|
||||||
|
* at the time of creation.
|
||||||
|
*
|
||||||
|
* @param xStreamBuffer The stream buffer for which to retrieve the buffers.
|
||||||
|
*
|
||||||
|
* @param ppucStreamBufferStorageArea Used to return a pointer to the stream
|
||||||
|
* buffer's storage area buffer.
|
||||||
|
*
|
||||||
|
* @param ppxStaticStreamBuffer Used to return a pointer to the stream
|
||||||
|
* buffer's data structure buffer.
|
||||||
|
*
|
||||||
|
* @return pdTRUE if buffers were retrieved, pdFALSE otherwise.
|
||||||
|
*
|
||||||
|
* \defgroup xStreamBufferGetStaticBuffers xStreamBufferGetStaticBuffers
|
||||||
|
* \ingroup StreamBufferManagement
|
||||||
|
*/
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
BaseType_t xStreamBufferGetStaticBuffers( StreamBufferHandle_t xStreamBuffer,
|
||||||
|
uint8_t ** ppucStreamBufferStorageArea,
|
||||||
|
StaticStreamBuffer_t ** ppxStaticStreamBuffer ) PRIVILEGED_FUNCTION;
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||||
* stream_buffer.h
|
* stream_buffer.h
|
||||||
|
@@ -1852,6 +1852,38 @@ char * pcTaskGetName( TaskHandle_t xTaskToQuery ) PRIVILEGED_FUNCTION; /*lin
|
|||||||
*/
|
*/
|
||||||
TaskHandle_t xTaskGetHandle( const char * pcNameToQuery ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
|
TaskHandle_t xTaskGetHandle( const char * pcNameToQuery ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||||
|
* task. h
|
||||||
|
* @code{c}
|
||||||
|
* BaseType_t xTaskGetStaticBuffers( TaskHandle_t xTask,
|
||||||
|
* StackType_t ** ppuxStackBuffer,
|
||||||
|
* StaticTask_t ** ppxTaskBuffer );
|
||||||
|
* @endcode
|
||||||
|
* @endcond
|
||||||
|
*
|
||||||
|
* Retrieve pointers to a statically created task's data structure
|
||||||
|
* buffer and stack buffer. These are the same buffers that are supplied
|
||||||
|
* at the time of creation.
|
||||||
|
*
|
||||||
|
* @param xTask The task for which to retrieve the buffers.
|
||||||
|
*
|
||||||
|
* @param ppuxStackBuffer Used to return a pointer to the task's stack buffer.
|
||||||
|
*
|
||||||
|
* @param ppxTaskBuffer Used to return a pointer to the task's data structure
|
||||||
|
* buffer.
|
||||||
|
*
|
||||||
|
* @return pdTRUE if buffers were retrieved, pdFALSE otherwise.
|
||||||
|
*
|
||||||
|
* \defgroup xTaskGetStaticBuffers xTaskGetStaticBuffers
|
||||||
|
* \ingroup TaskUtils
|
||||||
|
*/
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
BaseType_t xTaskGetStaticBuffers( TaskHandle_t xTask,
|
||||||
|
StackType_t ** ppuxStackBuffer,
|
||||||
|
StaticTask_t ** ppxTaskBuffer ) PRIVILEGED_FUNCTION;
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||||
* task.h
|
* task.h
|
||||||
|
@@ -1314,6 +1314,26 @@ TickType_t xTimerGetPeriod( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION;
|
|||||||
*/
|
*/
|
||||||
TickType_t xTimerGetExpiryTime( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION;
|
TickType_t xTimerGetExpiryTime( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BaseType_t xTimerGetStaticBuffer( TimerHandle_t xTimer,
|
||||||
|
* StaticTimer_t ** ppxTimerBuffer );
|
||||||
|
*
|
||||||
|
* Retrieve pointer to a statically created timer's data structure
|
||||||
|
* buffer. This is the same buffer that is supplied at the time of
|
||||||
|
* creation.
|
||||||
|
*
|
||||||
|
* @param xTimer The timer for which to retrieve the buffer.
|
||||||
|
*
|
||||||
|
* @param ppxTimerBuffer Used to return a pointer to the timers's data
|
||||||
|
* structure buffer.
|
||||||
|
*
|
||||||
|
* @return pdTRUE if the buffer was retrieved, pdFALSE otherwise.
|
||||||
|
*/
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
BaseType_t xTimerGetStaticBuffer( TimerHandle_t xTimer,
|
||||||
|
StaticTimer_t ** ppxTimerBuffer ) PRIVILEGED_FUNCTION;
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
|
||||||
/** @cond !DOC_EXCLUDE_HEADER_SECTION */
|
/** @cond !DOC_EXCLUDE_HEADER_SECTION */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -417,6 +417,55 @@ BaseType_t xQueueGenericReset( QueueHandle_t xQueue,
|
|||||||
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
|
||||||
|
BaseType_t xQueueGenericGetStaticBuffers( QueueHandle_t xQueue,
|
||||||
|
uint8_t ** ppucQueueStorage,
|
||||||
|
StaticQueue_t ** ppxStaticQueue )
|
||||||
|
{
|
||||||
|
BaseType_t xReturn;
|
||||||
|
Queue_t * const pxQueue = xQueue;
|
||||||
|
|
||||||
|
configASSERT( pxQueue );
|
||||||
|
configASSERT( ppxStaticQueue );
|
||||||
|
|
||||||
|
#if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
|
||||||
|
{
|
||||||
|
/* Check if the queue was statically allocated. */
|
||||||
|
if( pxQueue->ucStaticallyAllocated == ( uint8_t ) pdTRUE )
|
||||||
|
{
|
||||||
|
if( ppucQueueStorage != NULL )
|
||||||
|
{
|
||||||
|
*ppucQueueStorage = ( uint8_t * ) pxQueue->pcHead;
|
||||||
|
}
|
||||||
|
|
||||||
|
*ppxStaticQueue = ( StaticQueue_t * ) pxQueue;
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else /* configSUPPORT_DYNAMIC_ALLOCATION */
|
||||||
|
{
|
||||||
|
/* Queue must have been statically allocated. */
|
||||||
|
if( ppucQueueStorage != NULL )
|
||||||
|
{
|
||||||
|
*ppucQueueStorage = ( uint8_t * ) pxQueue->pcHead;
|
||||||
|
}
|
||||||
|
|
||||||
|
*ppxStaticQueue = ( StaticQueue_t * ) pxQueue;
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
}
|
||||||
|
#endif /* configSUPPORT_DYNAMIC_ALLOCATION */
|
||||||
|
|
||||||
|
return xReturn;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
|
#if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
|
||||||
|
|
||||||
QueueHandle_t xQueueGenericCreate( const UBaseType_t uxQueueLength,
|
QueueHandle_t xQueueGenericCreate( const UBaseType_t uxQueueLength,
|
||||||
|
@@ -387,6 +387,34 @@ static void prvInitialiseNewStreamBuffer( StreamBuffer_t * const pxStreamBuffer,
|
|||||||
#endif /* ( configSUPPORT_STATIC_ALLOCATION == 1 ) */
|
#endif /* ( configSUPPORT_STATIC_ALLOCATION == 1 ) */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
BaseType_t xStreamBufferGetStaticBuffers( StreamBufferHandle_t xStreamBuffer,
|
||||||
|
uint8_t ** ppucStreamBufferStorageArea,
|
||||||
|
StaticStreamBuffer_t ** ppxStaticStreamBuffer )
|
||||||
|
{
|
||||||
|
BaseType_t xReturn;
|
||||||
|
const StreamBuffer_t * const pxStreamBuffer = xStreamBuffer;
|
||||||
|
|
||||||
|
configASSERT( pxStreamBuffer );
|
||||||
|
configASSERT( ppucStreamBufferStorageArea );
|
||||||
|
configASSERT( ppxStaticStreamBuffer );
|
||||||
|
|
||||||
|
if( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_STATICALLY_ALLOCATED ) != ( uint8_t ) 0 )
|
||||||
|
{
|
||||||
|
*ppucStreamBufferStorageArea = pxStreamBuffer->pucBuffer;
|
||||||
|
*ppxStaticStreamBuffer = ( StaticStreamBuffer_t * ) pxStreamBuffer;
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return xReturn;
|
||||||
|
}
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer )
|
void vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer )
|
||||||
{
|
{
|
||||||
StreamBuffer_t * pxStreamBuffer = xStreamBuffer;
|
StreamBuffer_t * pxStreamBuffer = xStreamBuffer;
|
||||||
|
@@ -2899,6 +2899,53 @@ char * pcTaskGetName( TaskHandle_t xTaskToQuery ) /*lint !e971 Unqualified char
|
|||||||
#endif /* INCLUDE_xTaskGetHandle */
|
#endif /* INCLUDE_xTaskGetHandle */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
|
||||||
|
BaseType_t xTaskGetStaticBuffers( TaskHandle_t xTask,
|
||||||
|
StackType_t ** ppuxStackBuffer,
|
||||||
|
StaticTask_t ** ppxTaskBuffer )
|
||||||
|
{
|
||||||
|
BaseType_t xReturn;
|
||||||
|
TCB_t * pxTCB;
|
||||||
|
|
||||||
|
configASSERT( ppuxStackBuffer != NULL );
|
||||||
|
configASSERT( ppxTaskBuffer != NULL );
|
||||||
|
|
||||||
|
pxTCB = prvGetTCBFromHandle( xTask );
|
||||||
|
|
||||||
|
#if ( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE == 1 )
|
||||||
|
{
|
||||||
|
if( pxTCB->ucStaticallyAllocated == tskSTATICALLY_ALLOCATED_STACK_AND_TCB )
|
||||||
|
{
|
||||||
|
*ppuxStackBuffer = pxTCB->pxStack;
|
||||||
|
*ppxTaskBuffer = ( StaticTask_t * ) pxTCB;
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
}
|
||||||
|
else if( pxTCB->ucStaticallyAllocated == tskSTATICALLY_ALLOCATED_STACK_ONLY )
|
||||||
|
{
|
||||||
|
*ppuxStackBuffer = pxTCB->pxStack;
|
||||||
|
*ppxTaskBuffer = NULL;
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else /* tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE == 1 */
|
||||||
|
{
|
||||||
|
*ppuxStackBuffer = pxTCB->pxStack;
|
||||||
|
*ppxTaskBuffer = ( StaticTask_t * ) pxTCB;
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
}
|
||||||
|
#endif /* tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE == 1 */
|
||||||
|
|
||||||
|
return xReturn;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#if ( configUSE_TRACE_FACILITY == 1 )
|
#if ( configUSE_TRACE_FACILITY == 1 )
|
||||||
|
|
||||||
UBaseType_t uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray,
|
UBaseType_t uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray,
|
||||||
|
@@ -512,6 +512,30 @@
|
|||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
BaseType_t xTimerGetStaticBuffer( TimerHandle_t xTimer,
|
||||||
|
StaticTimer_t ** ppxTimerBuffer )
|
||||||
|
{
|
||||||
|
BaseType_t xReturn;
|
||||||
|
Timer_t * pxTimer = xTimer;
|
||||||
|
|
||||||
|
configASSERT( ppxTimerBuffer != NULL );
|
||||||
|
|
||||||
|
if( ( pxTimer->ucStatus & tmrSTATUS_IS_STATICALLY_ALLOCATED ) != 0 )
|
||||||
|
{
|
||||||
|
*ppxTimerBuffer = ( StaticTimer_t * ) pxTimer;
|
||||||
|
xReturn = pdTRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xReturn = pdFALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return xReturn;
|
||||||
|
}
|
||||||
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
const char * pcTimerGetName( TimerHandle_t xTimer ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
|
const char * pcTimerGetName( TimerHandle_t xTimer ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
|
||||||
{
|
{
|
||||||
Timer_t * pxTimer = xTimer;
|
Timer_t * pxTimer = xTimer;
|
||||||
|
@@ -36,7 +36,7 @@
|
|||||||
* @brief Create a new task that is pinned to a particular core
|
* @brief Create a new task that is pinned to a particular core
|
||||||
*
|
*
|
||||||
* Helper function to create a task that is pinned to a particular core, or has
|
* Helper function to create a task that is pinned to a particular core, or has
|
||||||
* no affinity. In other wrods, the created task will have an affinity mask of:
|
* no affinity. In other words, the created task will have an affinity mask of:
|
||||||
* - (1 << xCoreID) if it is pinned to a particular core
|
* - (1 << xCoreID) if it is pinned to a particular core
|
||||||
* - Set to tskNO_AFFINITY if it has no affinity
|
* - Set to tskNO_AFFINITY if it has no affinity
|
||||||
*
|
*
|
||||||
@@ -119,7 +119,7 @@
|
|||||||
TaskHandle_t xTaskGetIdleTaskHandleForCPU( BaseType_t xCoreID );
|
TaskHandle_t xTaskGetIdleTaskHandleForCPU( BaseType_t xCoreID );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the current core affintiy of a particular task
|
* @brief Get the current core affinity of a particular task
|
||||||
*
|
*
|
||||||
* Helper function to get the core affinity of a particular task. If the task is
|
* Helper function to get the core affinity of a particular task. If the task is
|
||||||
* pinned to a particular core, the core ID is returned. If the task is not
|
* pinned to a particular core, the core ID is returned. If the task is not
|
||||||
|
Reference in New Issue
Block a user