📄 blockq.lst
字号:
222 {
223 if( usData != usExpectedValue )
\ 000026 819B0000 CMP.W R11, 0x0(SP)
\ 00002A 0324 JEQ ??vBlockingQueueConsumer_1
224 {
225 /* Catch-up. */
226 usExpectedValue = usData;
\ 00002C 2B41 MOV.W 0x0(SP), R11
227
228 sErrorEverOccurred = pdTRUE;
\ 00002E 1943 MOV.W #0x1, R9
\ 000030 F03F JMP ??vBlockingQueueConsumer_0
229 }
230 else
231 {
232 /* We have successfully received a message, so increment the
233 variable used to check we are still running. */
234 if( sErrorEverOccurred == pdFALSE )
\ ??vBlockingQueueConsumer_1:
\ 000032 0993 CMP.W #0x0, R9
\ 000034 0420 JNE ??vBlockingQueueConsumer_2
235 {
236 ( *pxQueueParameters->psCheckVariable )++;
\ 000036 1F480400 MOV.W 0x4(R8), R15
\ 00003A 9F530000 ADD.W #0x1, 0(R15)
237 }
238
239 /* Increment the value we expect to remove from the queue next time
240 round. */
241 ++usExpectedValue;
\ ??vBlockingQueueConsumer_2:
\ 00003E 1B53 ADD.W #0x1, R11
\ 000040 E83F JMP ??vBlockingQueueConsumer_0
242 }
243 }
244 }
245 }
246 /*-----------------------------------------------------------*/
247
248 /* This is called to check that all the created tasks are still running. */
\ In segment CODE, align 2
249 portBASE_TYPE xAreBlockingQueuesStillRunning( void )
\ xAreBlockingQueuesStillRunning:
250 {
\ 000000 0A12 PUSH.W R10
251 static portSHORT sLastBlockingConsumerCount[ blckqNUM_TASK_SETS ] = { ( unsigned portSHORT ) 0, ( unsigned portSHORT ) 0, ( unsigned portSHORT ) 0 };
252 static portSHORT sLastBlockingProducerCount[ blckqNUM_TASK_SETS ] = { ( unsigned portSHORT ) 0, ( unsigned portSHORT ) 0, ( unsigned portSHORT ) 0 };
253 portBASE_TYPE xReturn = pdPASS, xTasks;
\ 000002 1C43 MOV.W #0x1, R12
254
255 /* Not too worried about mutual exclusion on these variables as they are 16
256 bits and we are only reading them. We also only care to see if they have
257 changed or not.
258
259 Loop through each check variable to and return pdFALSE if any are found not
260 to have changed since the last call. */
261
262 for( xTasks = 0; xTasks < blckqNUM_TASK_SETS; xTasks++ )
\ 000004 0E43 MOV.W #0x0, R14
\ ??xAreBlockingQueuesStillRunning_0:
\ 000006 3E900300 CMP.W #0x3, R14
\ 00000A 2234 JGE ??xAreBlockingQueuesStillRunning_1
263 {
264 if( sBlockingConsumerCount[ xTasks ] == sLastBlockingConsumerCount[ xTasks ] )
\ 00000C 0D4E MOV.W R14, R13
\ 00000E 0D5D RLA.W R13
\ 000010 0F4E MOV.W R14, R15
\ 000012 0F5F RLA.W R15
\ 000014 9D9F........ CMP.W ??sLastBlockingConsumerCount(R15), sBlockingConsumerCount(R13)
\ 00001A 0120 JNE ??xAreBlockingQueuesStillRunning_2
265 {
266 xReturn = pdFALSE;
\ 00001C 0C43 MOV.W #0x0, R12
267 }
268 sLastBlockingConsumerCount[ xTasks ] = sBlockingConsumerCount[ xTasks ];
\ ??xAreBlockingQueuesStillRunning_2:
\ 00001E 0D4E MOV.W R14, R13
\ 000020 0D5D RLA.W R13
\ 000022 0F4E MOV.W R14, R15
\ 000024 0F5F RLA.W R15
\ 000026 9F4D........ MOV.W sBlockingConsumerCount(R13), ??sLastBlockingConsumerCount(R15)
269
270
271 if( sBlockingProducerCount[ xTasks ] == sLastBlockingProducerCount[ xTasks ] )
\ 00002C 0D4E MOV.W R14, R13
\ 00002E 0D5D RLA.W R13
\ 000030 0F4E MOV.W R14, R15
\ 000032 0F5F RLA.W R15
\ 000034 9D9F........ CMP.W ??sLastBlockingProducerCount(R15), sBlockingProducerCount(R13)
\ 00003A 0120 JNE ??xAreBlockingQueuesStillRunning_3
272 {
273 xReturn = pdFALSE;
\ 00003C 0C43 MOV.W #0x0, R12
274 }
275 sLastBlockingProducerCount[ xTasks ] = sBlockingProducerCount[ xTasks ];
\ ??xAreBlockingQueuesStillRunning_3:
\ 00003E 0D4E MOV.W R14, R13
\ 000040 0D5D RLA.W R13
\ 000042 0F4E MOV.W R14, R15
\ 000044 0F5F RLA.W R15
\ 000046 9F4D........ MOV.W sBlockingProducerCount(R13), ??sLastBlockingProducerCount(R15)
276 }
\ 00004C 1E53 ADD.W #0x1, R14
\ 00004E DB3F JMP ??xAreBlockingQueuesStillRunning_0
277
278 return xReturn;
\ ??xAreBlockingQueuesStillRunning_1:
\ 000050 3A41 POP.W R10
\ 000052 3041 RET
279 }
\ In segment DATA16_Z, align 2, align-sorted
\ 000000 REQUIRE ?cstart_init_zero
\ ??sLastBlockingConsumerCount:
\ 000000 DS8 6
\ In segment DATA16_Z, align 2, align-sorted
\ 000000 REQUIRE ?cstart_init_zero
\ ??sLastBlockingProducerCount:
\ 000000 DS8 6
\ In segment DATA16_C, align 1, align-sorted
\ `?<Constant "QConsB1">`:
\ 000000 51436F6E7342 DC8 "QConsB1"
\ 3100
\ In segment DATA16_C, align 1, align-sorted
\ `?<Constant "QProdB2">`:
\ 000000 5150726F6442 DC8 "QProdB2"
\ 3200
\ In segment DATA16_C, align 1, align-sorted
\ `?<Constant "QProdB3">`:
\ 000000 5150726F6442 DC8 "QProdB3"
\ 3300
\ In segment DATA16_C, align 1, align-sorted
\ `?<Constant "QConsB4">`:
\ 000000 51436F6E7342 DC8 "QConsB4"
\ 3400
\ In segment DATA16_C, align 1, align-sorted
\ `?<Constant "QProdB5">`:
\ 000000 5150726F6442 DC8 "QProdB5"
\ 3500
\ In segment DATA16_C, align 1, align-sorted
\ `?<Constant "QConsB6">`:
\ 000000 51436F6E7342 DC8 "QConsB6"
\ 3600
280
Maximum stack usage in bytes:
Function CSTACK
-------- ------
vBlockingQueueConsumer 14
-> xQueueReceive 14
vBlockingQueueProducer 12
-> xQueueSend 12
vStartBlockingQueueTasks 72
-> pvPortMalloc 24
-> xQueueCreate 24
-> pvPortMalloc 24
-> xTaskCreate 32
-> xTaskCreate 40
-> pvPortMalloc 40
-> xQueueCreate 40
-> pvPortMalloc 40
-> xTaskCreate 48
-> xTaskCreate 56
-> pvPortMalloc 56
-> xQueueCreate 56
-> pvPortMalloc 56
-> xTaskCreate 64
-> xTaskCreate 72
xAreBlockingQueuesStillRunning 4
Segment part sizes:
Function/Label Bytes
-------------- -----
sBlockingConsumerCount 6
sBlockingProducerCount 6
vStartBlockingQueueTasks 352
vBlockingQueueProducer 60
vBlockingQueueConsumer 66
xAreBlockingQueuesStillRunning 84
sLastBlockingConsumerCount 6
sLastBlockingProducerCount 6
?<Constant "QConsB1"> 8
?<Constant "QProdB2"> 8
?<Constant "QProdB3"> 8
?<Constant "QConsB4"> 8
?<Constant "QProdB5"> 8
?<Constant "QConsB6"> 8
562 bytes in segment CODE
48 bytes in segment DATA16_C
24 bytes in segment DATA16_Z
562 bytes of CODE memory
48 bytes of CONST memory
24 bytes of DATA memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -