|
149 | 149 | PRIVILEGED_DATA static QueueHandle_t xTimerQueue = NULL;
|
150 | 150 | PRIVILEGED_DATA static TaskHandle_t xTimerTaskHandle = NULL;
|
151 | 151 |
|
| 152 | + #if ( ( portUSING_GRANULAR_LOCKS == 1 ) && ( configNUMBER_OF_CORES > 1 ) ) |
| 153 | + PRIVILEGED_DATA static portSPINLOCK_TYPE xTaskSpinlock = portINIT_TIMERS_TASK_SPINLOCK_STATIC; |
| 154 | + PRIVILEGED_DATA static portSPINLOCK_TYPE xISRSpinlock = portINIT_TIMERS_ISR_SPINLOCK_STATIC; |
| 155 | + #endif /* #if ( ( portUSING_GRANULAR_LOCKS == 1 ) && ( configNUMBER_OF_CORES > 1 ) ) */ |
| 156 | + |
152 | 157 | /*-----------------------------------------------------------*/
|
153 | 158 |
|
154 | 159 | /*
|
|
576 | 581 | traceENTER_vTimerSetReloadMode( xTimer, xAutoReload );
|
577 | 582 |
|
578 | 583 | configASSERT( xTimer );
|
579 |
| - taskENTER_CRITICAL(); |
| 584 | + taskLOCK_DATA_GROUP( &xTaskSpinlock, &xISRSpinlock ); |
580 | 585 | {
|
581 | 586 | if( xAutoReload != pdFALSE )
|
582 | 587 | {
|
|
587 | 592 | pxTimer->ucStatus &= ( ( uint8_t ) ~tmrSTATUS_IS_AUTORELOAD );
|
588 | 593 | }
|
589 | 594 | }
|
590 |
| - taskEXIT_CRITICAL(); |
| 595 | + taskUNLOCK_DATA_GROUP( &xTaskSpinlock, &xISRSpinlock ); |
591 | 596 |
|
592 | 597 | traceRETURN_vTimerSetReloadMode();
|
593 | 598 | }
|
|
601 | 606 | traceENTER_xTimerGetReloadMode( xTimer );
|
602 | 607 |
|
603 | 608 | configASSERT( xTimer );
|
604 |
| - portBASE_TYPE_ENTER_CRITICAL(); |
| 609 | + taskLOCK_DATA_GROUP( &xTaskSpinlock, &xISRSpinlock ); |
605 | 610 | {
|
606 | 611 | if( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) == 0U )
|
607 | 612 | {
|
|
614 | 619 | xReturn = pdTRUE;
|
615 | 620 | }
|
616 | 621 | }
|
617 |
| - portBASE_TYPE_EXIT_CRITICAL(); |
| 622 | + taskUNLOCK_DATA_GROUP( &xTaskSpinlock, &xISRSpinlock ); |
618 | 623 |
|
619 | 624 | traceRETURN_xTimerGetReloadMode( xReturn );
|
620 | 625 |
|
|
1113 | 1118 | /* Check that the list from which active timers are referenced, and the
|
1114 | 1119 | * queue used to communicate with the timer service, have been
|
1115 | 1120 | * initialised. */
|
1116 |
| - taskENTER_CRITICAL(); |
| 1121 | + taskLOCK_DATA_GROUP( &xTaskSpinlock, &xISRSpinlock ); |
1117 | 1122 | {
|
1118 | 1123 | if( xTimerQueue == NULL )
|
1119 | 1124 | {
|
|
1155 | 1160 | mtCOVERAGE_TEST_MARKER();
|
1156 | 1161 | }
|
1157 | 1162 | }
|
1158 |
| - taskEXIT_CRITICAL(); |
| 1163 | + taskUNLOCK_DATA_GROUP( &xTaskSpinlock, &xISRSpinlock ); |
1159 | 1164 | }
|
1160 | 1165 | /*-----------------------------------------------------------*/
|
1161 | 1166 |
|
|
1169 | 1174 | configASSERT( xTimer );
|
1170 | 1175 |
|
1171 | 1176 | /* Is the timer in the list of active timers? */
|
1172 |
| - portBASE_TYPE_ENTER_CRITICAL(); |
| 1177 | + taskLOCK_DATA_GROUP( &xTaskSpinlock, &xISRSpinlock ); |
1173 | 1178 | {
|
1174 | 1179 | if( ( pxTimer->ucStatus & tmrSTATUS_IS_ACTIVE ) == 0U )
|
1175 | 1180 | {
|
|
1180 | 1185 | xReturn = pdTRUE;
|
1181 | 1186 | }
|
1182 | 1187 | }
|
1183 |
| - portBASE_TYPE_EXIT_CRITICAL(); |
| 1188 | + taskUNLOCK_DATA_GROUP( &xTaskSpinlock, &xISRSpinlock ); |
1184 | 1189 |
|
1185 | 1190 | traceRETURN_xTimerIsTimerActive( xReturn );
|
1186 | 1191 |
|
|
1197 | 1202 |
|
1198 | 1203 | configASSERT( xTimer );
|
1199 | 1204 |
|
1200 |
| - taskENTER_CRITICAL(); |
| 1205 | + taskLOCK_DATA_GROUP( &xTaskSpinlock, &xISRSpinlock ); |
1201 | 1206 | {
|
1202 | 1207 | pvReturn = pxTimer->pvTimerID;
|
1203 | 1208 | }
|
1204 |
| - taskEXIT_CRITICAL(); |
| 1209 | + taskUNLOCK_DATA_GROUP( &xTaskSpinlock, &xISRSpinlock ); |
1205 | 1210 |
|
1206 | 1211 | traceRETURN_pvTimerGetTimerID( pvReturn );
|
1207 | 1212 |
|
|
1218 | 1223 |
|
1219 | 1224 | configASSERT( xTimer );
|
1220 | 1225 |
|
1221 |
| - taskENTER_CRITICAL(); |
| 1226 | + taskLOCK_DATA_GROUP( &xTaskSpinlock, &xISRSpinlock ); |
1222 | 1227 | {
|
1223 | 1228 | pxTimer->pvTimerID = pvNewID;
|
1224 | 1229 | }
|
1225 |
| - taskEXIT_CRITICAL(); |
| 1230 | + taskUNLOCK_DATA_GROUP( &xTaskSpinlock, &xISRSpinlock ); |
1226 | 1231 |
|
1227 | 1232 | traceRETURN_vTimerSetTimerID();
|
1228 | 1233 | }
|
|
0 commit comments