|
79 | 79 | #define tmrSTATUS_IS_STATICALLY_ALLOCATED ( 0x02U )
|
80 | 80 | #define tmrSTATUS_IS_AUTORELOAD ( 0x04U )
|
81 | 81 |
|
| 82 | +/* |
| 83 | + * Macros to mark the start and end of a critical code region. |
| 84 | + */ |
| 85 | + #if ( portUSING_GRANULAR_LOCKS == 1 ) |
| 86 | + #define tmrENTER_CRITICAL() taskDATA_GROUP_ENTER_CRITICAL( &xTaskSpinlock, &xISRSpinlock ) |
| 87 | + #define tmrEXIT_CRITICAL() taskDATA_GROUP_EXIT_CRITICAL( &xTaskSpinlock, &xISRSpinlock ) |
| 88 | + #else /* #if ( portUSING_GRANULAR_LOCKS == 1 ) */ |
| 89 | + #define tmrENTER_CRITICAL() taskENTER_CRITICAL() |
| 90 | + #define tmrEXIT_CRITICAL() taskEXIT_CRITICAL() |
| 91 | + #endif /* #if ( portUSING_GRANULAR_LOCKS == 1 ) */ |
| 92 | + |
82 | 93 | /* The definition of the timers themselves. */
|
83 | 94 | typedef struct tmrTimerControl /* The old naming convention is used to prevent breaking kernel aware debuggers. */
|
84 | 95 | {
|
|
149 | 160 | PRIVILEGED_DATA static QueueHandle_t xTimerQueue = NULL;
|
150 | 161 | PRIVILEGED_DATA static TaskHandle_t xTimerTaskHandle = NULL;
|
151 | 162 |
|
| 163 | + #if ( ( portUSING_GRANULAR_LOCKS == 1 ) && ( configNUMBER_OF_CORES > 1 ) ) |
| 164 | + PRIVILEGED_DATA static portSPINLOCK_TYPE xTaskSpinlock = portINIT_SPINLOCK_STATIC; |
| 165 | + PRIVILEGED_DATA static portSPINLOCK_TYPE xISRSpinlock = portINIT_SPINLOCK_STATIC; |
| 166 | + #endif /* #if ( ( portUSING_GRANULAR_LOCKS == 1 ) && ( configNUMBER_OF_CORES > 1 ) ) */ |
| 167 | + |
152 | 168 | /*-----------------------------------------------------------*/
|
153 | 169 |
|
154 | 170 | /*
|
|
572 | 588 | traceENTER_vTimerSetReloadMode( xTimer, xAutoReload );
|
573 | 589 |
|
574 | 590 | configASSERT( xTimer );
|
575 |
| - taskENTER_CRITICAL(); |
| 591 | + tmrENTER_CRITICAL(); |
576 | 592 | {
|
577 | 593 | if( xAutoReload != pdFALSE )
|
578 | 594 | {
|
|
583 | 599 | pxTimer->ucStatus &= ( ( uint8_t ) ~tmrSTATUS_IS_AUTORELOAD );
|
584 | 600 | }
|
585 | 601 | }
|
586 |
| - taskEXIT_CRITICAL(); |
| 602 | + tmrEXIT_CRITICAL(); |
587 | 603 |
|
588 | 604 | traceRETURN_vTimerSetReloadMode();
|
589 | 605 | }
|
|
597 | 613 | traceENTER_xTimerGetReloadMode( xTimer );
|
598 | 614 |
|
599 | 615 | configASSERT( xTimer );
|
600 |
| - portBASE_TYPE_ENTER_CRITICAL(); |
| 616 | + tmrENTER_CRITICAL(); |
601 | 617 | {
|
602 | 618 | if( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) == 0U )
|
603 | 619 | {
|
|
610 | 626 | xReturn = pdTRUE;
|
611 | 627 | }
|
612 | 628 | }
|
613 |
| - portBASE_TYPE_EXIT_CRITICAL(); |
| 629 | + tmrEXIT_CRITICAL(); |
614 | 630 |
|
615 | 631 | traceRETURN_xTimerGetReloadMode( xReturn );
|
616 | 632 |
|
|
1116 | 1132 | /* Check that the list from which active timers are referenced, and the
|
1117 | 1133 | * queue used to communicate with the timer service, have been
|
1118 | 1134 | * initialised. */
|
1119 |
| - taskENTER_CRITICAL(); |
| 1135 | + tmrENTER_CRITICAL(); |
1120 | 1136 | {
|
1121 | 1137 | if( xTimerQueue == NULL )
|
1122 | 1138 | {
|
|
1158 | 1174 | mtCOVERAGE_TEST_MARKER();
|
1159 | 1175 | }
|
1160 | 1176 | }
|
1161 |
| - taskEXIT_CRITICAL(); |
| 1177 | + tmrEXIT_CRITICAL(); |
1162 | 1178 | }
|
1163 | 1179 | /*-----------------------------------------------------------*/
|
1164 | 1180 |
|
|
1172 | 1188 | configASSERT( xTimer );
|
1173 | 1189 |
|
1174 | 1190 | /* Is the timer in the list of active timers? */
|
1175 |
| - portBASE_TYPE_ENTER_CRITICAL(); |
| 1191 | + tmrENTER_CRITICAL(); |
1176 | 1192 | {
|
1177 | 1193 | if( ( pxTimer->ucStatus & tmrSTATUS_IS_ACTIVE ) == 0U )
|
1178 | 1194 | {
|
|
1183 | 1199 | xReturn = pdTRUE;
|
1184 | 1200 | }
|
1185 | 1201 | }
|
1186 |
| - portBASE_TYPE_EXIT_CRITICAL(); |
| 1202 | + tmrEXIT_CRITICAL(); |
1187 | 1203 |
|
1188 | 1204 | traceRETURN_xTimerIsTimerActive( xReturn );
|
1189 | 1205 |
|
|
1200 | 1216 |
|
1201 | 1217 | configASSERT( xTimer );
|
1202 | 1218 |
|
1203 |
| - taskENTER_CRITICAL(); |
| 1219 | + tmrENTER_CRITICAL(); |
1204 | 1220 | {
|
1205 | 1221 | pvReturn = pxTimer->pvTimerID;
|
1206 | 1222 | }
|
1207 |
| - taskEXIT_CRITICAL(); |
| 1223 | + tmrEXIT_CRITICAL(); |
1208 | 1224 |
|
1209 | 1225 | traceRETURN_pvTimerGetTimerID( pvReturn );
|
1210 | 1226 |
|
|
1221 | 1237 |
|
1222 | 1238 | configASSERT( xTimer );
|
1223 | 1239 |
|
1224 |
| - taskENTER_CRITICAL(); |
| 1240 | + tmrENTER_CRITICAL(); |
1225 | 1241 | {
|
1226 | 1242 | pxTimer->pvTimerID = pvNewID;
|
1227 | 1243 | }
|
1228 |
| - taskEXIT_CRITICAL(); |
| 1244 | + tmrEXIT_CRITICAL(); |
1229 | 1245 |
|
1230 | 1246 | traceRETURN_vTimerSetTimerID();
|
1231 | 1247 | }
|
|
0 commit comments