|
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