mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-19 21:11:57 -04:00
refactor: change methods ENTER|EXIT critical
The read and write from BaseType_t, can be do in a atomic context, and dont need a mutex contol. Change this methods for access the critical regiao only if is neccessary. For make this, create a macro in portable.h that apoint to tasENTER|EXIT_CRITIAL() function. Now, if port is guarantee that access BaseType_t in atomic context, a empty macro can be define in portmacro.h, like this: Signed-off-by: guilherme giacomo simoes <trintaeoitogc@gmail.com>
This commit is contained in:
parent
1cb8042961
commit
a118f6a351
|
@ -85,6 +85,14 @@
|
||||||
#define portARCH_NAME NULL
|
#define portARCH_NAME NULL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef portBASE_TYPE_ENTER_CRITICAL
|
||||||
|
#define portBASE_TYPE_ENTER_CRITICAL() taskENTER_CRITICAL()
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef portBASE_TYPE_EXIT_CRITICAL
|
||||||
|
#define portBASE_TYPE_EXIT_CRITICAL() taskEXIT_CRITICAL()
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef configSTACK_DEPTH_TYPE
|
#ifndef configSTACK_DEPTH_TYPE
|
||||||
#define configSTACK_DEPTH_TYPE StackType_t
|
#define configSTACK_DEPTH_TYPE StackType_t
|
||||||
#endif
|
#endif
|
||||||
|
|
8
queue.c
8
queue.c
|
@ -2202,11 +2202,11 @@ UBaseType_t uxQueueMessagesWaiting( const QueueHandle_t xQueue )
|
||||||
|
|
||||||
configASSERT( xQueue );
|
configASSERT( xQueue );
|
||||||
|
|
||||||
taskENTER_CRITICAL();
|
portBASE_TYPE_ENTER_CRITICAL();
|
||||||
{
|
{
|
||||||
uxReturn = ( ( Queue_t * ) xQueue )->uxMessagesWaiting;
|
uxReturn = ( ( Queue_t * ) xQueue )->uxMessagesWaiting;
|
||||||
}
|
}
|
||||||
taskEXIT_CRITICAL();
|
portBASE_TYPE_EXIT_CRITICAL();
|
||||||
|
|
||||||
traceRETURN_uxQueueMessagesWaiting( uxReturn );
|
traceRETURN_uxQueueMessagesWaiting( uxReturn );
|
||||||
|
|
||||||
|
@ -2223,11 +2223,11 @@ UBaseType_t uxQueueSpacesAvailable( const QueueHandle_t xQueue )
|
||||||
|
|
||||||
configASSERT( pxQueue );
|
configASSERT( pxQueue );
|
||||||
|
|
||||||
taskENTER_CRITICAL();
|
portBASE_TYPE_ENTER_CRITICAL();
|
||||||
{
|
{
|
||||||
uxReturn = ( UBaseType_t ) ( pxQueue->uxLength - pxQueue->uxMessagesWaiting );
|
uxReturn = ( UBaseType_t ) ( pxQueue->uxLength - pxQueue->uxMessagesWaiting );
|
||||||
}
|
}
|
||||||
taskEXIT_CRITICAL();
|
portBASE_TYPE_EXIT_CRITICAL();
|
||||||
|
|
||||||
traceRETURN_uxQueueSpacesAvailable( uxReturn );
|
traceRETURN_uxQueueSpacesAvailable( uxReturn );
|
||||||
|
|
||||||
|
|
12
tasks.c
12
tasks.c
|
@ -2623,14 +2623,14 @@ static void prvInitialiseNewTask( TaskFunction_t pxTaskCode,
|
||||||
|
|
||||||
traceENTER_uxTaskPriorityGet( xTask );
|
traceENTER_uxTaskPriorityGet( xTask );
|
||||||
|
|
||||||
taskENTER_CRITICAL();
|
portBASE_TYPE_ENTER_CRITICAL();
|
||||||
{
|
{
|
||||||
/* If null is passed in here then it is the priority of the task
|
/* If null is passed in here then it is the priority of the task
|
||||||
* that called uxTaskPriorityGet() that is being queried. */
|
* that called uxTaskPriorityGet() that is being queried. */
|
||||||
pxTCB = prvGetTCBFromHandle( xTask );
|
pxTCB = prvGetTCBFromHandle( xTask );
|
||||||
uxReturn = pxTCB->uxPriority;
|
uxReturn = pxTCB->uxPriority;
|
||||||
}
|
}
|
||||||
taskEXIT_CRITICAL();
|
portBASE_TYPE_EXIT_CRITICAL();
|
||||||
|
|
||||||
traceRETURN_uxTaskPriorityGet( uxReturn );
|
traceRETURN_uxTaskPriorityGet( uxReturn );
|
||||||
|
|
||||||
|
@ -2697,14 +2697,14 @@ static void prvInitialiseNewTask( TaskFunction_t pxTaskCode,
|
||||||
|
|
||||||
traceENTER_uxTaskBasePriorityGet( xTask );
|
traceENTER_uxTaskBasePriorityGet( xTask );
|
||||||
|
|
||||||
taskENTER_CRITICAL();
|
portBASE_TYPE_ENTER_CRITICAL();
|
||||||
{
|
{
|
||||||
/* If null is passed in here then it is the base priority of the task
|
/* If null is passed in here then it is the base priority of the task
|
||||||
* that called uxTaskBasePriorityGet() that is being queried. */
|
* that called uxTaskBasePriorityGet() that is being queried. */
|
||||||
pxTCB = prvGetTCBFromHandle( xTask );
|
pxTCB = prvGetTCBFromHandle( xTask );
|
||||||
uxReturn = pxTCB->uxBasePriority;
|
uxReturn = pxTCB->uxBasePriority;
|
||||||
}
|
}
|
||||||
taskEXIT_CRITICAL();
|
portBASE_TYPE_EXIT_CRITICAL();
|
||||||
|
|
||||||
traceRETURN_uxTaskBasePriorityGet( uxReturn );
|
traceRETURN_uxTaskBasePriorityGet( uxReturn );
|
||||||
|
|
||||||
|
@ -3040,12 +3040,12 @@ static void prvInitialiseNewTask( TaskFunction_t pxTaskCode,
|
||||||
|
|
||||||
traceENTER_vTaskCoreAffinityGet( xTask );
|
traceENTER_vTaskCoreAffinityGet( xTask );
|
||||||
|
|
||||||
taskENTER_CRITICAL();
|
portBASE_TYPE_ENTER_CRITICAL();
|
||||||
{
|
{
|
||||||
pxTCB = prvGetTCBFromHandle( xTask );
|
pxTCB = prvGetTCBFromHandle( xTask );
|
||||||
uxCoreAffinityMask = pxTCB->uxCoreAffinityMask;
|
uxCoreAffinityMask = pxTCB->uxCoreAffinityMask;
|
||||||
}
|
}
|
||||||
taskEXIT_CRITICAL();
|
portBASE_TYPE_EXIT_CRITICAL();
|
||||||
|
|
||||||
traceRETURN_vTaskCoreAffinityGet( uxCoreAffinityMask );
|
traceRETURN_vTaskCoreAffinityGet( uxCoreAffinityMask );
|
||||||
|
|
||||||
|
|
8
timers.c
8
timers.c
|
@ -601,7 +601,7 @@
|
||||||
traceENTER_xTimerGetReloadMode( xTimer );
|
traceENTER_xTimerGetReloadMode( xTimer );
|
||||||
|
|
||||||
configASSERT( xTimer );
|
configASSERT( xTimer );
|
||||||
taskENTER_CRITICAL();
|
portBASE_TYPE_ENTER_CRITICAL();
|
||||||
{
|
{
|
||||||
if( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) == 0U )
|
if( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) == 0U )
|
||||||
{
|
{
|
||||||
|
@ -614,7 +614,7 @@
|
||||||
xReturn = pdTRUE;
|
xReturn = pdTRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
taskEXIT_CRITICAL();
|
portBASE_TYPE_EXIT_CRITICAL();
|
||||||
|
|
||||||
traceRETURN_xTimerGetReloadMode( xReturn );
|
traceRETURN_xTimerGetReloadMode( xReturn );
|
||||||
|
|
||||||
|
@ -1169,7 +1169,7 @@
|
||||||
configASSERT( xTimer );
|
configASSERT( xTimer );
|
||||||
|
|
||||||
/* Is the timer in the list of active timers? */
|
/* Is the timer in the list of active timers? */
|
||||||
taskENTER_CRITICAL();
|
portBASE_TYPE_ENTER_CRITICAL();
|
||||||
{
|
{
|
||||||
if( ( pxTimer->ucStatus & tmrSTATUS_IS_ACTIVE ) == 0U )
|
if( ( pxTimer->ucStatus & tmrSTATUS_IS_ACTIVE ) == 0U )
|
||||||
{
|
{
|
||||||
|
@ -1180,7 +1180,7 @@
|
||||||
xReturn = pdTRUE;
|
xReturn = pdTRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
taskEXIT_CRITICAL();
|
portBASE_TYPE_EXIT_CRITICAL();
|
||||||
|
|
||||||
traceRETURN_xTimerIsTimerActive( xReturn );
|
traceRETURN_xTimerIsTimerActive( xReturn );
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue