|
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() portENTER_CRITICAL_DATA_GROUP( ( portSPINLOCK_TYPE * ) &xTaskSpinlock, ( portSPINLOCK_TYPE * ) &xISRSpinlock ) |
| 87 | + #define tmrEXIT_CRITICAL() portEXIT_CRITICAL_DATA_GROUP( ( portSPINLOCK_TYPE * ) &xTaskSpinlock, ( portSPINLOCK_TYPE * ) &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 | /*
|
|
576 | 592 | traceENTER_vTimerSetReloadMode( xTimer, xAutoReload );
|
577 | 593 |
|
578 | 594 | configASSERT( xTimer );
|
579 |
| - taskENTER_CRITICAL(); |
| 595 | + tmrENTER_CRITICAL(); |
580 | 596 | {
|
581 | 597 | if( xAutoReload != pdFALSE )
|
582 | 598 | {
|
|
587 | 603 | pxTimer->ucStatus &= ( ( uint8_t ) ~tmrSTATUS_IS_AUTORELOAD );
|
588 | 604 | }
|
589 | 605 | }
|
590 |
| - taskEXIT_CRITICAL(); |
| 606 | + tmrEXIT_CRITICAL(); |
591 | 607 |
|
592 | 608 | traceRETURN_vTimerSetReloadMode();
|
593 | 609 | }
|
|
601 | 617 | traceENTER_xTimerGetReloadMode( xTimer );
|
602 | 618 |
|
603 | 619 | configASSERT( xTimer );
|
604 |
| - portBASE_TYPE_ENTER_CRITICAL(); |
| 620 | + tmrENTER_CRITICAL(); |
605 | 621 | {
|
606 | 622 | if( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) == 0U )
|
607 | 623 | {
|
|
614 | 630 | xReturn = pdTRUE;
|
615 | 631 | }
|
616 | 632 | }
|
617 |
| - portBASE_TYPE_EXIT_CRITICAL(); |
| 633 | + tmrEXIT_CRITICAL(); |
618 | 634 |
|
619 | 635 | traceRETURN_xTimerGetReloadMode( xReturn );
|
620 | 636 |
|
|
1113 | 1129 | /* Check that the list from which active timers are referenced, and the
|
1114 | 1130 | * queue used to communicate with the timer service, have been
|
1115 | 1131 | * initialised. */
|
1116 |
| - taskENTER_CRITICAL(); |
| 1132 | + tmrENTER_CRITICAL(); |
1117 | 1133 | {
|
1118 | 1134 | if( xTimerQueue == NULL )
|
1119 | 1135 | {
|
|
1155 | 1171 | mtCOVERAGE_TEST_MARKER();
|
1156 | 1172 | }
|
1157 | 1173 | }
|
1158 |
| - taskEXIT_CRITICAL(); |
| 1174 | + tmrEXIT_CRITICAL(); |
1159 | 1175 | }
|
1160 | 1176 | /*-----------------------------------------------------------*/
|
1161 | 1177 |
|
|
1169 | 1185 | configASSERT( xTimer );
|
1170 | 1186 |
|
1171 | 1187 | /* Is the timer in the list of active timers? */
|
1172 |
| - portBASE_TYPE_ENTER_CRITICAL(); |
| 1188 | + tmrENTER_CRITICAL(); |
1173 | 1189 | {
|
1174 | 1190 | if( ( pxTimer->ucStatus & tmrSTATUS_IS_ACTIVE ) == 0U )
|
1175 | 1191 | {
|
|
1180 | 1196 | xReturn = pdTRUE;
|
1181 | 1197 | }
|
1182 | 1198 | }
|
1183 |
| - portBASE_TYPE_EXIT_CRITICAL(); |
| 1199 | + tmrEXIT_CRITICAL(); |
1184 | 1200 |
|
1185 | 1201 | traceRETURN_xTimerIsTimerActive( xReturn );
|
1186 | 1202 |
|
|
1197 | 1213 |
|
1198 | 1214 | configASSERT( xTimer );
|
1199 | 1215 |
|
1200 |
| - taskENTER_CRITICAL(); |
| 1216 | + tmrENTER_CRITICAL(); |
1201 | 1217 | {
|
1202 | 1218 | pvReturn = pxTimer->pvTimerID;
|
1203 | 1219 | }
|
1204 |
| - taskEXIT_CRITICAL(); |
| 1220 | + tmrEXIT_CRITICAL(); |
1205 | 1221 |
|
1206 | 1222 | traceRETURN_pvTimerGetTimerID( pvReturn );
|
1207 | 1223 |
|
|
1218 | 1234 |
|
1219 | 1235 | configASSERT( xTimer );
|
1220 | 1236 |
|
1221 |
| - taskENTER_CRITICAL(); |
| 1237 | + tmrENTER_CRITICAL(); |
1222 | 1238 | {
|
1223 | 1239 | pxTimer->pvTimerID = pvNewID;
|
1224 | 1240 | }
|
1225 |
| - taskEXIT_CRITICAL(); |
| 1241 | + tmrEXIT_CRITICAL(); |
1226 | 1242 |
|
1227 | 1243 | traceRETURN_vTimerSetTimerID();
|
1228 | 1244 | }
|
|
0 commit comments