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

📄 os_mutex.txt

📁 uc/os在lpc2100系列的KEIL模板 uc/os在lpc2100系列的real view模板 uc/os在lpc210X系列的real view模板
💻 TXT
📖 第 1 页 / 共 4 页
字号:
                  |L1.1284|
000504  ef000002          SVC      #0x2                  ;419
000508  e1d400b2          LDRH     r0,[r4,#2]            ;420
00050c  e1a02420          LSR      r2,r0,#8              ;420
000510  e20010ff          AND      r1,r0,#0xff           ;421
000514  e59f01cc          LDR      r0,|L1.1768|
000518  e5900000          LDR      r0,[r0,#0]            ;422  ; OSTCBCur
00051c  e5d0302d          LDRB     r3,[r0,#0x2d]         ;422
000520  e1530002          CMP      r3,r2                 ;422
000524  0a000004          BEQ      |L1.1340|
000528  e1530001          CMP      r3,r1                 ;423
00052c  0a000002          BEQ      |L1.1340|
000530  ef000003          SVC      #0x3                  ;424
000534  e3a00078          MOV      r0,#0x78              ;425
000538  eaffffe6          B        |L1.1240|
                  |L1.1340|
00053c  e59f51a8          LDR      r5,|L1.1772|
000540  e1530002          CMP      r3,r2                 ;427
000544  1a00001f          BNE      |L1.1480|
000548  e5d0302f          LDRB     r3,[r0,#0x2f]         ;430
00054c  e59f61a0          LDR      r6,|L1.1780|
000550  e5d0e030          LDRB     lr,[r0,#0x30]         ;430
000554  e7d6c003          LDRB     r12,[r6,r3]           ;430
000558  e1dcc00e          BICS     r12,r12,lr            ;430
00055c  e59fe194          LDR      lr,|L1.1784|
000560  e7c6c003          STRB     r12,[r6,r3]           ;430
000564  1a000003          BNE      |L1.1400|
000568  e5d0c031          LDRB     r12,[r0,#0x31]        ;431
00056c  e5de3000          LDRB     r3,[lr,#0]            ;431  ; OSRdyGrp
000570  e1c3300c          BIC      r3,r3,r12             ;431
000574  e5ce3000          STRB     r3,[lr,#0]            ;431  ; OSRdyGrp
                  |L1.1400|
000578  e5c0102d          STRB     r1,[r0,#0x2d]         ;433
00057c  e1a031a1          LSR      r3,r1,#3              ;434
000580  e5c0302f          STRB     r3,[r0,#0x2f]         ;434
000584  e5d0302f          LDRB     r3,[r0,#0x2f]         ;435
000588  e59f716c          LDR      r7,|L1.1788|
00058c  e7d7c003          LDRB     r12,[r7,r3]           ;435
000590  e5c0c031          STRB     r12,[r0,#0x31]        ;435
000594  e201c007          AND      r12,r1,#7             ;436
000598  e5c0c02e          STRB     r12,[r0,#0x2e]        ;436
00059c  e7d7c00c          LDRB     r12,[r7,r12]          ;437
0005a0  e5c0c030          STRB     r12,[r0,#0x30]        ;437
0005a4  e5d0c031          LDRB     r12,[r0,#0x31]        ;438
0005a8  e5de7000          LDRB     r7,[lr,#0]            ;438  ; OSRdyGrp
0005ac  e18cc007          ORR      r12,r12,r7            ;438
0005b0  e5cec000          STRB     r12,[lr,#0]           ;438  ; OSRdyGrp
0005b4  e7d6c003          LDRB     r12,[r6,r3]           ;439
0005b8  e5d0e030          LDRB     lr,[r0,#0x30]         ;439
0005bc  e18cc00e          ORR      r12,r12,lr            ;439
0005c0  e7c6c003          STRB     r12,[r6,r3]           ;439
0005c4  e7850101          STR      r0,[r5,r1,LSL #2]     ;440
                  |L1.1480|
0005c8  e3a00001          MOV      r0,#1                 ;442
0005cc  e7850102          STR      r0,[r5,r2,LSL #2]     ;442
0005d0  e5d40001          LDRB     r0,[r4,#1]            ;443
0005d4  e3500000          CMP      r0,#0                 ;443
0005d8  0a00000d          BEQ      |L1.1556|
0005dc  e3a02010          MOV      r2,#0x10              ;445
0005e0  e3a01000          MOV      r1,#0                 ;445
0005e4  e1a00004          MOV      r0,r4                 ;445
0005e8  ebfffffe          BL       OS_EventTaskRdy
0005ec  e1d410b2          LDRH     r1,[r4,#2]            ;446
0005f0  e2011cff          AND      r1,r1,#0xff00         ;446
0005f4  e1811000          ORR      r1,r1,r0              ;447
0005f8  e1c410b2          STRH     r1,[r4,#2]            ;447
0005fc  e7950100          LDR      r0,[r5,r0,LSL #2]     ;448
000600  e5840004          STR      r0,[r4,#4]            ;448
000604  ef000003          SVC      #0x3                  ;449
000608  ebfffffe          BL       OS_Sched
00060c  e3a00000          MOV      r0,#0                 ;451
000610  eaffffb0          B        |L1.1240|
                  |L1.1556|
000614  e1d400b2          LDRH     r0,[r4,#2]            ;453
000618  e38000ff          ORR      r0,r0,#0xff           ;453
00061c  e1c400b2          STRH     r0,[r4,#2]            ;453
000620  e3a00000          MOV      r0,#0                 ;454
000624  e5840004          STR      r0,[r4,#4]            ;454
000628  ef000003          SVC      #0x3                  ;455
00062c  e3a00000          MOV      r0,#0                 ;456
000630  eaffffa8          B        |L1.1240|
;;;458    /*$PAGE*/
                          ENDP

                  OSMutexQuery PROC
;;;477    INT8U  OSMutexQuery (OS_EVENT *pevent, OS_MUTEX_DATA *pdata)
;;;478    {
000634  e92d4070          PUSH     {r4-r6,lr}
000638  e1a05000          MOV      r5,r0
00063c  e1a04001          MOV      r4,r1
;;;479    #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;480        OS_CPU_SR  cpu_sr;
;;;481    #endif    
;;;482        INT8U     *psrc;
;;;483        INT8U     *pdest;
;;;484    
;;;485    
;;;486        if (OSIntNesting > 0) {                                /* See if called from ISR ...               */
000640  e59f009c          LDR      r0,|L1.1764|
000644  e5d00000          LDRB     r0,[r0,#0]  ; OSIntNesting
000648  e3500000          CMP      r0,#0
00064c  0a000002          BEQ      |L1.1628|
;;;487            return (OS_ERR_QUERY_ISR);                         /* ... can't QUERY mutex from an ISR        */
000650  e3a00006          MOV      r0,#6
                  |L1.1620|
000654  e8bd4070          POP      {r4-r6,lr}
;;;488        }
;;;489    #if OS_ARG_CHK_EN > 0
;;;490        if (pevent == (OS_EVENT *)0) {                         /* Validate 'pevent'                        */
;;;491            return (OS_ERR_PEVENT_NULL);
;;;492        }
;;;493        if (pevent->OSEventType != OS_EVENT_TYPE_MUTEX) {      /* Validate event block type                */
;;;494            return (OS_ERR_EVENT_TYPE);
;;;495        }
;;;496    #endif
;;;497        OS_ENTER_CRITICAL();
;;;498        pdata->OSMutexPIP  = (INT8U)(pevent->OSEventCnt >> 8);
;;;499        pdata->OSOwnerPrio = (INT8U)(pevent->OSEventCnt & OS_MUTEX_KEEP_LOWER_8);
;;;500        if (pdata->OSOwnerPrio == 0xFF) {
;;;501            pdata->OSValue = 1;
;;;502        } else {
;;;503            pdata->OSValue = 0;
;;;504        }
;;;505        pdata->OSEventGrp  = pevent->OSEventGrp;               /* Copy wait list                           */
;;;506        psrc               = &pevent->OSEventTbl[0];
;;;507        pdest              = &pdata->OSEventTbl[0];
;;;508    #if OS_EVENT_TBL_SIZE > 0
;;;509        *pdest++           = *psrc++;
;;;510    #endif
;;;511    
;;;512    #if OS_EVENT_TBL_SIZE > 1
;;;513        *pdest++           = *psrc++;
;;;514    #endif
;;;515    
;;;516    #if OS_EVENT_TBL_SIZE > 2
;;;517        *pdest++           = *psrc++;
;;;518    #endif
;;;519    
;;;520    #if OS_EVENT_TBL_SIZE > 3
;;;521        *pdest++           = *psrc++;
;;;522    #endif
;;;523    
;;;524    #if OS_EVENT_TBL_SIZE > 4
;;;525        *pdest++           = *psrc++;
;;;526    #endif
;;;527    
;;;528    #if OS_EVENT_TBL_SIZE > 5
;;;529        *pdest++           = *psrc++;
;;;530    #endif
;;;531    
;;;532    #if OS_EVENT_TBL_SIZE > 6
;;;533        *pdest++           = *psrc++;
;;;534    #endif
;;;535    
;;;536    #if OS_EVENT_TBL_SIZE > 7
;;;537        *pdest             = *psrc;
;;;538    #endif
;;;539        OS_EXIT_CRITICAL();
;;;540        return (OS_NO_ERR);
;;;541    }
000658  e12fff1e          BX       lr
                  |L1.1628|
00065c  e3550000          CMP      r5,#0                 ;490
000660  1a000001          BNE      |L1.1644|
000664  e3a00004          MOV      r0,#4                 ;491
000668  eafffff9          B        |L1.1620|
                  |L1.1644|
00066c  e5d50000          LDRB     r0,[r5,#0]            ;493
000670  e3500004          CMP      r0,#4                 ;493
000674  0a000001          BEQ      |L1.1664|
000678  e3a00001          MOV      r0,#1                 ;494
00067c  eafffff4          B        |L1.1620|
                  |L1.1664|
000680  ef000002          SVC      #0x2                  ;497
000684  e1d500b2          LDRH     r0,[r5,#2]            ;498
000688  e1a00420          LSR      r0,r0,#8              ;498
00068c  e5c40005          STRB     r0,[r4,#5]            ;498
000690  e1d500b2          LDRH     r0,[r5,#2]            ;499
000694  e20000ff          AND      r0,r0,#0xff           ;499
000698  e5c40004          STRB     r0,[r4,#4]            ;499
00069c  e35000ff          CMP      r0,#0xff              ;500
0006a0  1a000002          BNE      |L1.1712|
0006a4  e3a00001          MOV      r0,#1                 ;501
0006a8  e5c40003          STRB     r0,[r4,#3]            ;501
0006ac  ea000001          B        |L1.1720|
                  |L1.1712|
0006b0  e3a00000          MOV      r0,#0                 ;503
0006b4  e5c40003          STRB     r0,[r4,#3]            ;503
                  |L1.1720|
0006b8  e5d50001          LDRB     r0,[r5,#1]            ;505
0006bc  e5c40002          STRB     r0,[r4,#2]            ;505
0006c0  e2850008          ADD      r0,r5,#8              ;506
0006c4  e5d01000          LDRB     r1,[r0,#0]            ;509
0006c8  e5c41000          STRB     r1,[r4,#0]            ;509
0006cc  e2841001          ADD      r1,r4,#1              ;509
0006d0  e5d00001          LDRB     r0,[r0,#1]            ;513
0006d4  e5c10000          STRB     r0,[r1,#0]            ;513
0006d8  ef000003          SVC      #0x3                  ;539
0006dc  e3a00000          MOV      r0,#0                 ;540
0006e0  eaffffdb          B        |L1.1620|
;;;542    #endif                                                     /* OS_MUTEX_QUERY_EN                        */
                          ENDP

                  |L1.1764|
0006e4  00000000          DCD      OSIntNesting
                  |L1.1768|
0006e8  00000000          DCD      OSTCBCur
                  |L1.1772|
0006ec  00000000          DCD      OSTCBPrioTbl
                  |L1.1776|
0006f0  00000000          DCD      OSEventFreeList
                  |L1.1780|
0006f4  00000000          DCD      OSRdyTbl
                  |L1.1784|
0006f8  00000000          DCD      OSRdyGrp
                  |L1.1788|
0006fc  00000000          DCD      OSMapTbl

⌨️ 快捷键说明

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