FreeRTOS: Add xQueueGetMutexHolder support

Enables it as a config option, but there's no overhead at all if the
function is not called anywhere.
pull/4/head
Angus Gratton 2016-08-24 18:10:52 +08:00
rodzic 4b281af0f7
commit f5715ac28d
2 zmienionych plików z 6 dodań i 3 usunięć

Wyświetl plik

@ -222,6 +222,8 @@
#define INCLUDE_vTaskDelay 1
#define INCLUDE_uxTaskGetStackHighWaterMark 1
#define INCLUDE_xSemaphoreGetMutexHolder 1
/* The priority at which the tick interrupt runs. This should probably be
kept at 1. */
#define configKERNEL_INTERRUPT_PRIORITY 1

Wyświetl plik

@ -483,14 +483,15 @@ int8_t *pcAllocatedBuffer;
void* xQueueGetMutexHolder( QueueHandle_t xSemaphore )
{
void *pxReturn;
Queue_t * const pxQueue = ( Queue_t * ) xSemaphore;
void *pxReturn;
/* This function is called by xSemaphoreGetMutexHolder(), and should not
be called directly. Note: This is a good way of determining if the
calling task is the mutex holder, but not a good way of determining the
identity of the mutex holder, as the holder may change between the
following critical section exiting and the function returning. */
taskENTER_CRITICAL();
taskENTER_CRITICAL(&pxQueue->mux);
{
if( ( ( Queue_t * ) xSemaphore )->uxQueueType == queueQUEUE_IS_MUTEX )
{
@ -501,7 +502,7 @@ int8_t *pcAllocatedBuffer;
pxReturn = NULL;
}
}
taskEXIT_CRITICAL();
taskEXIT_CRITICAL(&pxQueue->mux);
return pxReturn;
} /*lint !e818 xSemaphore cannot be a pointer to const because it is a typedef. */