⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 blockq.lst

📁 本代码已经经过修改
💻 LST
📖 第 1 页 / 共 3 页
字号:
    223          			if( usData != usExpectedValue )
    224          			{
    225          				/* Catch-up. */
    226          				usExpectedValue = usData;
   \                     ??vBlockingQueueConsumer_2:
   \   0000000C   6846               MOV         R0,SP
   \   0000000E   0588               LDRH        R5,[R0, #+0]
    227          
    228          				sErrorEverOccurred = pdTRUE;
   \   00000010   0126               MOV         R6,#+0x1
    229          			}
   \                     ??vBlockingQueueConsumer_1:
   \   00000012   6268               LDR         R2,[R4, #+0x4]
   \   00000014   6946               MOV         R1,SP
   \   00000016   2068               LDR         R0,[R4, #+0]
   \   00000018   ........           _BLF        xQueueReceive,xQueueReceive??rT
   \   0000001C   0128               CMP         R0,#+0x1
   \   0000001E   F8D1               BNE         ??vBlockingQueueConsumer_1
   \   00000020   6846               MOV         R0,SP
   \   00000022   0088               LDRH        R0,[R0, #+0]
   \   00000024   2D04               LSL         R5,R5,#+0x10
   \   00000026   2D0C               LSR         R5,R5,#+0x10
   \   00000028   A842               CMP         R0,R5
   \   0000002A   EFD1               BNE         ??vBlockingQueueConsumer_2
    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 )
   \   0000002C   002E               CMP         R6,#+0
   \   0000002E   04D1               BNE         ??vBlockingQueueConsumer_3
    235          				{
    236          					( *pxQueueParameters->psCheckVariable )++;
   \   00000030   A068               LDR         R0,[R4, #+0x8]
   \   00000032   0021               MOV         R1,#+0
   \   00000034   415E               LDRSH       R1,[R0, R1]
   \   00000036   491C               ADD         R1,R1,#+0x1
   \   00000038   0180               STRH        R1,[R0, #+0]
    237          				}
    238          							
    239          				/* Increment the value we expect to remove from the queue next time
    240          				round. */
    241          				++usExpectedValue;
   \                     ??vBlockingQueueConsumer_3:
   \   0000003A   6D1C               ADD         R5,R5,#+0x1
   \   0000003C   E9E7               B           ??vBlockingQueueConsumer_1
    242          			}			
    243          		}		
    244          	}
    245          }
    246          /*-----------------------------------------------------------*/
    247          
    248          /* This is called to check that all the created tasks are still running. */

   \                                 In segment CODE, align 4, keep-with-next
    249          portBASE_TYPE xAreBlockingQueuesStillRunning( void )
    250          {
   \                     xAreBlockingQueuesStillRunning:
   \   00000000   F0B4               PUSH        {R4-R7}
    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;
   \   00000002   0120               MOV         R0,#+0x1
    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++ )
   \   00000004   ....               LDR         R1,??DataTable2    ;; ??sBlockingConsumerCount
   \   00000006   0F4A               LDR         R2,??xAreBlockingQueuesStillRunning_0  ;; ??sLastBlockingConsumerCount
   \   00000008   ....               LDR         R3,??DataTable3    ;; ??sBlockingProducerCount
   \   0000000A   0F4C               LDR         R4,??xAreBlockingQueuesStillRunning_0+0x4  ;; ??sLastBlockingProducerCount
   \   0000000C   0325               MOV         R5,#+0x3
   \                     ??xAreBlockingQueuesStillRunning_1:
   \   0000000E   0026               MOV         R6,#+0
   \   00000010   8E5F               LDRSH       R6,[R1, R6]
   \   00000012   0027               MOV         R7,#+0
   \   00000014   D75F               LDRSH       R7,[R2, R7]
   \   00000016   BE42               CMP         R6,R7
   \   00000018   00D1               BNE         ??xAreBlockingQueuesStillRunning_2
    263          	{
    264          		if( sBlockingConsumerCount[ xTasks ] == sLastBlockingConsumerCount[ xTasks ]  )
    265          		{
    266          			xReturn = pdFALSE;
   \   0000001A   0020               MOV         R0,#+0
    267          		}
    268          		sLastBlockingConsumerCount[ xTasks ] = sBlockingConsumerCount[ xTasks ];
   \                     ??xAreBlockingQueuesStillRunning_2:
   \   0000001C   0E88               LDRH        R6,[R1, #+0]
   \   0000001E   1680               STRH        R6,[R2, #+0]
    269          
    270          
    271          		if( sBlockingProducerCount[ xTasks ] == sLastBlockingProducerCount[ xTasks ]  )
   \   00000020   0026               MOV         R6,#+0
   \   00000022   9E5F               LDRSH       R6,[R3, R6]
   \   00000024   0027               MOV         R7,#+0
   \   00000026   E75F               LDRSH       R7,[R4, R7]
   \   00000028   BE42               CMP         R6,R7
   \   0000002A   00D1               BNE         ??xAreBlockingQueuesStillRunning_3
    272          		{
    273          			xReturn = pdFALSE;
   \   0000002C   0020               MOV         R0,#+0
    274          		}
    275          		sLastBlockingProducerCount[ xTasks ] = sBlockingProducerCount[ xTasks ];
   \                     ??xAreBlockingQueuesStillRunning_3:
   \   0000002E   1E88               LDRH        R6,[R3, #+0]
   \   00000030   2680               STRH        R6,[R4, #+0]
    276          	}
   \   00000032   A41C               ADD         R4,R4,#+0x2
   \   00000034   9B1C               ADD         R3,R3,#+0x2
   \   00000036   921C               ADD         R2,R2,#+0x2
   \   00000038   891C               ADD         R1,R1,#+0x2
   \   0000003A   6D1E               SUB         R5,R5,#+0x1
   \   0000003C   E7D1               BNE         ??xAreBlockingQueuesStillRunning_1
    277          
    278          	return xReturn;
   \   0000003E   F0BC               POP         {R4-R7}
   \   00000040   00B0               ADD         SP,#+0
   \   00000042   7047               BX          LR                 ;; return
   \                     ??xAreBlockingQueuesStillRunning_0:
   \   00000044   ........           DC32        ??sLastBlockingConsumerCount
   \   00000048   ........           DC32        ??sLastBlockingProducerCount
    279          }

   \                                 In segment DATA_Z, align 4, align-sorted
   \                     ??sLastBlockingConsumerCount:
   \   00000000                      DS8 8

   \                                 In segment DATA_Z, align 4, align-sorted
   \                     ??sLastBlockingProducerCount:
   \   00000000                      DS8 8

   \                                 In segment CODE, align 4, keep-with-next
   \                     ??DataTable2:
   \   00000000   ........           DC32        ??sBlockingConsumerCount

   \                                 In segment CODE, align 4, keep-with-next
   \                     ??DataTable3:
   \   00000000   ........           DC32        ??sBlockingProducerCount

   \                                 In segment DATA_C, align 4, align-sorted
   \                     `?<Constant "QConsB1">`:
   \   00000000   51436F6E7342       DC8 "QConsB1"
   \              3100        

   \                                 In segment DATA_C, align 4, align-sorted
   \                     `?<Constant "QProdB2">`:
   \   00000000   5150726F6442       DC8 "QProdB2"
   \              3200        

   \                                 In segment DATA_C, align 4, align-sorted
   \                     `?<Constant "QProdB3">`:
   \   00000000   5150726F6442       DC8 "QProdB3"
   \              3300        

   \                                 In segment DATA_C, align 4, align-sorted
   \                     `?<Constant "QConsB4">`:
   \   00000000   51436F6E7342       DC8 "QConsB4"
   \              3400        

   \                                 In segment DATA_C, align 4, align-sorted
   \                     `?<Constant "QProdB5">`:
   \   00000000   5150726F6442       DC8 "QProdB5"
   \              3500        

   \                                 In segment DATA_C, align 4, align-sorted
   \                     `?<Constant "QConsB6">`:
   \   00000000   51436F6E7342       DC8 "QConsB6"
   \              3600        
    280          

   Maximum stack usage in bytes:

     Function                       CSTACK
     --------                       ------
     vBlockingQueueConsumer            20
     vBlockingQueueProducer            16
     vStartBlockingQueueTasks          64
     xAreBlockingQueuesStillRunning    20


   Segment part sizes:

     Function/Label                 Bytes
     --------------                 -----
     sBlockingConsumerCount            8
     sBlockingProducerCount            8
     vStartBlockingQueueTasks        308
     vBlockingQueueProducer           58
     vBlockingQueueConsumer           62
     xAreBlockingQueuesStillRunning   76
     sLastBlockingConsumerCount        8
     sLastBlockingProducerCount        8
     ??DataTable2                      4
     ??DataTable3                      4
     ?<Constant "QConsB1">             8
     ?<Constant "QProdB2">             8
     ?<Constant "QProdB3">             8
     ?<Constant "QConsB4">             8
     ?<Constant "QProdB5">             8
     ?<Constant "QConsB6">             8
      Others                          92

 
 592 bytes in segment CODE
  48 bytes in segment DATA_C
  32 bytes in segment DATA_Z
  12 bytes in segment INITTAB
 
 512 bytes of CODE  memory (+ 92 bytes shared)
  48 bytes of CONST memory
  32 bytes of DATA  memory

Errors: none
Warnings: none

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -