os_flag.txt

来自「uc/os在lpc2100系列的KEIL模板 uc/os在lpc2100系列的」· 文本 代码 · 共 1,195 行 · 第 1/5 页

TXT
1,195
字号
;;;466                     flags_cur = pgrp->OSFlagFlags;            /* Will return the state of the group       */
;;;467                     OS_EXIT_CRITICAL();                       /* Yes, condition met, return to caller     */
;;;468                     *err      = OS_NO_ERR;
;;;469                     return (flags_cur);
;;;470                 } else {                                      /* Block task until events occur or timeout */
;;;471                     OS_FlagBlock(pgrp, &node, flags, wait_type, timeout);
;;;472                     OS_EXIT_CRITICAL();
;;;473                 }
;;;474                 break;
;;;475    #endif
;;;476    
;;;477            default:
;;;478                 OS_EXIT_CRITICAL();
;;;479                 flags_cur = (OS_FLAGS)0;
;;;480                 *err      = OS_FLAG_ERR_WAIT_TYPE;
;;;481                 return (flags_cur);
;;;482        }
;;;483        OS_Sched();                                            /* Find next HPT ready to run               */
;;;484        OS_ENTER_CRITICAL();
;;;485        if (OSTCBCur->OSTCBStat & OS_STAT_FLAG) {              /* Have we timed-out?                       */
;;;486            OS_FlagUnlink(&node);
;;;487            OSTCBCur->OSTCBStat = OS_STAT_RDY;                 /* Yes, make task ready-to-run              */
;;;488            OS_EXIT_CRITICAL();
;;;489            flags_cur           = (OS_FLAGS)0;
;;;490            *err                = OS_TIMEOUT;                  /* Indicate that we timed-out waiting       */
;;;491        } else {
;;;492            if (consume == TRUE) {                             /* See if we need to consume the flags      */
;;;493                switch (wait_type) {
;;;494                    case OS_FLAG_WAIT_SET_ALL:
;;;495                    case OS_FLAG_WAIT_SET_ANY:                 /* Clear ONLY the flags we got              */
;;;496                         pgrp->OSFlagFlags &= ~OSTCBCur->OSTCBFlagsRdy;
;;;497                         break;
;;;498    
;;;499    #if OS_FLAG_WAIT_CLR_EN > 0
;;;500                    case OS_FLAG_WAIT_CLR_ALL:
;;;501                    case OS_FLAG_WAIT_CLR_ANY:                 /* Set   ONLY the flags we got              */
;;;502                         pgrp->OSFlagFlags |= OSTCBCur->OSTCBFlagsRdy;
;;;503                         break;
;;;504    #endif
;;;505                }
;;;506            }
;;;507            flags_cur = pgrp->OSFlagFlags;
;;;508            OS_EXIT_CRITICAL();
;;;509            *err      = OS_NO_ERR;                             /* Event(s) must have occurred              */
;;;510        }
;;;511        return (flags_cur);
;;;512    }
0004c0  e12fff1e          BX       lr
                  |L1.1220|
0004c4  e3540000          CMP      r4,#0                 ;393
0004c8  1a000003          BNE      |L1.1244|
0004cc  e3a00096          MOV      r0,#0x96              ;394
0004d0  e5c50000          STRB     r0,[r5,#0]            ;394
0004d4  e3a00000          MOV      r0,#0                 ;395
0004d8  eafffff6          B        |L1.1208|
                  |L1.1244|
0004dc  e5d40000          LDRB     r0,[r4,#0]            ;397
0004e0  e3500005          CMP      r0,#5                 ;397
0004e4  0a000003          BEQ      |L1.1272|
0004e8  e3a00001          MOV      r0,#1                 ;398
0004ec  e5c50000          STRB     r0,[r5,#0]            ;398
0004f0  e3a00000          MOV      r0,#0                 ;399
0004f4  eaffffef          B        |L1.1208|
                  |L1.1272|
0004f8  e3180080          TST      r8,#0x80              ;402
0004fc  0a000002          BEQ      |L1.1292|
000500  e3c88080          BIC      r8,r8,#0x80           ;403
000504  e3a06001          MOV      r6,#1                 ;404
000508  ea000000          B        |L1.1296|
                  |L1.1292|
00050c  e3a06000          MOV      r6,#0                 ;406
                  |L1.1296|
000510  ef000002          SVC      #0x2                  ;409
000514  e3580000          CMP      r8,#0                 ;410
000518  e3a09000          MOV      r9,#0                 ;409
00051c  0a00002f          BEQ      |L1.1504|
000520  e3580001          CMP      r8,#1                 ;410
000524  0a000042          BEQ      |L1.1588|
000528  e3580002          CMP      r8,#2                 ;410
00052c  0a00000e          BEQ      |L1.1388|
000530  e3580003          CMP      r8,#3                 ;410
000534  1a000062          BNE      |L1.1732|
000538  e1d410b8          LDRH     r1,[r4,#8]            ;428
00053c  e0010007          AND      r0,r1,r7              ;428
000540  e3500000          CMP      r0,#0                 ;429
000544  0a00001d          BEQ      |L1.1472|
000548  e3560001          CMP      r6,#1                 ;430
00054c  1a000001          BNE      |L1.1368|
000550  e1c10000          BIC      r0,r1,r0              ;431
000554  e1c400b8          STRH     r0,[r4,#8]            ;431
                  |L1.1368|
000558  e1d440b8          LDRH     r4,[r4,#8]            ;433
00055c  ef000003          SVC      #0x3                  ;434
000560  e5c59000          STRB     r9,[r5,#0]            ;435
000564  e1a00004          MOV      r0,r4                 ;436
000568  eaffffd2          B        |L1.1208|
                  |L1.1388|
00056c  e1d410b8          LDRH     r1,[r4,#8]            ;412
000570  e0010007          AND      r0,r1,r7              ;412
000574  e1500007          CMP      r0,r7                 ;413
000578  1a000008          BNE      |L1.1440|
00057c  e3560001          CMP      r6,#1                 ;414
000580  1a000001          BNE      |L1.1420|
000584  e1c10000          BIC      r0,r1,r0              ;415
000588  e1c400b8          STRH     r0,[r4,#8]            ;415
                  |L1.1420|
00058c  e1d440b8          LDRH     r4,[r4,#8]            ;417
000590  ef000003          SVC      #0x3                  ;418
000594  e5c59000          STRB     r9,[r5,#0]            ;419
000598  e1a00004          MOV      r0,r4                 ;420
00059c  eaffffc5          B        |L1.1208|
                  |L1.1440|
0005a0  e1a03008          MOV      r3,r8                 ;422
0005a4  e1a02007          MOV      r2,r7                 ;422
0005a8  e28d1004          ADD      r1,sp,#4              ;422
0005ac  e1a00004          MOV      r0,r4                 ;422
0005b0  e58da000          STR      r10,[sp,#0]           ;422
0005b4  ebfffffe          BL       OS_FlagBlock
0005b8  ef000003          SVC      #0x3                  ;423
0005bc  ea000030          B        |L1.1668|
                  |L1.1472|
0005c0  e1a03008          MOV      r3,r8                 ;438
0005c4  e1a02007          MOV      r2,r7                 ;438
0005c8  e28d1004          ADD      r1,sp,#4              ;438
0005cc  e1a00004          MOV      r0,r4                 ;438
0005d0  e58da000          STR      r10,[sp,#0]           ;438
0005d4  ebfffffe          BL       OS_FlagBlock
0005d8  ef000003          SVC      #0x3                  ;439
0005dc  ea000028          B        |L1.1668|
                  |L1.1504|
0005e0  e1d410b8          LDRH     r1,[r4,#8]            ;445
0005e4  e1c70001          BIC      r0,r7,r1              ;445
0005e8  e1500007          CMP      r0,r7                 ;446
0005ec  1a000008          BNE      |L1.1556|
0005f0  e3560001          CMP      r6,#1                 ;447
0005f4  1a000001          BNE      |L1.1536|
0005f8  e1800001          ORR      r0,r0,r1              ;448
0005fc  e1c400b8          STRH     r0,[r4,#8]            ;448
                  |L1.1536|
000600  e1d440b8          LDRH     r4,[r4,#8]            ;450
000604  ef000003          SVC      #0x3                  ;451
000608  e5c59000          STRB     r9,[r5,#0]            ;452
00060c  e1a00004          MOV      r0,r4                 ;453
000610  eaffffa8          B        |L1.1208|
                  |L1.1556|
000614  e1a03008          MOV      r3,r8                 ;455
000618  e1a02007          MOV      r2,r7                 ;455
00061c  e28d1004          ADD      r1,sp,#4              ;455
000620  e1a00004          MOV      r0,r4                 ;455
000624  e58da000          STR      r10,[sp,#0]           ;455
000628  ebfffffe          BL       OS_FlagBlock
00062c  ef000003          SVC      #0x3                  ;456
000630  ea000013          B        |L1.1668|
                  |L1.1588|
000634  e1d410b8          LDRH     r1,[r4,#8]            ;461
000638  e1c70001          BIC      r0,r7,r1              ;461
00063c  e3500000          CMP      r0,#0                 ;462
000640  0a000008          BEQ      |L1.1640|
000644  e3560001          CMP      r6,#1                 ;463
000648  1a000001          BNE      |L1.1620|
00064c  e1800001          ORR      r0,r0,r1              ;464
000650  e1c400b8          STRH     r0,[r4,#8]            ;464
                  |L1.1620|
000654  e1d440b8          LDRH     r4,[r4,#8]            ;466
000658  ef000003          SVC      #0x3                  ;467
00065c  e5c59000          STRB     r9,[r5,#0]            ;468
000660  e1a00004          MOV      r0,r4                 ;469
000664  eaffff93          B        |L1.1208|
                  |L1.1640|
000668  e1a03008          MOV      r3,r8                 ;471
00066c  e1a02007          MOV      r2,r7                 ;471
000670  e28d1004          ADD      r1,sp,#4              ;471
000674  e1a00004          MOV      r0,r4                 ;471
000678  e58da000          STR      r10,[sp,#0]           ;471
00067c  ebfffffe          BL       OS_FlagBlock
000680  ef000003          SVC      #0x3                  ;472
                  |L1.1668|
000684  ebfffffe          BL       OS_Sched
000688  ef000002          SVC      #0x2                  ;484
00068c  e59f72fc          LDR      r7,|L1.2448|
000690  e5970000          LDR      r0,[r7,#0]            ;485  ; OSTCBCur
000694  e5d0102c          LDRB     r1,[r0,#0x2c]         ;485
000698  e3110020          TST      r1,#0x20              ;485
00069c  0a00000d          BEQ      |L1.1752|
0006a0  e28d0004          ADD      r0,sp,#4              ;486
0006a4  ebfffffe          BL       OS_FlagUnlink
0006a8  e5970000          LDR      r0,[r7,#0]            ;487  ; OSTCBCur
0006ac  e5c0902c          STRB     r9,[r0,#0x2c]         ;487
0006b0  ef000003          SVC      #0x3                  ;488
0006b4  e3a04000          MOV      r4,#0                 ;489
0006b8  e3a0000a          MOV      r0,#0xa               ;490
0006bc  e5c50000          STRB     r0,[r5,#0]            ;490
0006c0  ea00001a          B        |L1.1840|
                  |L1.1732|
0006c4  ef000003          SVC      #0x3                  ;478
0006c8  e3a00000          MOV      r0,#0                 ;479
0006cc  e3a01097          MOV      r1,#0x97              ;480
0006d0  e5c51000          STRB     r1,[r5,#0]            ;480
0006d4  eaffff77          B        |L1.1208|
                  |L1.1752|
0006d8  e3560001          CMP      r6,#1                 ;492
0006dc  1a000010          BNE      |L1.1828|
0006e0  e3580000          CMP      r8,#0                 ;493
0006e4  0a00000a          BEQ      |L1.1812|
0006e8  e3580001          CMP      r8,#1                 ;493
0006ec  0a000008          BEQ      |L1.1812|
0006f0  e3580002          CMP      r8,#2                 ;493
0006f4  0a000001          BEQ      |L1.1792|
0006f8  e3580003          CMP      r8,#3                 ;493
0006fc  1a000008          BNE      |L1.1828|
                  |L1.1792|
000700  e1d410b8          LDRH     r1,[r4,#8]            ;496
000704  e1d002b8          LDRH     r0,[r0,#0x28]         ;496
000708  e1c10000          BIC      r0,r1,r0              ;496
00070c  e1c400b8          STRH     r0,[r4,#8]            ;496
000710  ea000003          B        |L1.1828|
                  |L1.1812|
000714  e1d410b8          LDRH     r1,[r4,#8]            ;502
000718  e1d002b8          LDRH     r0,[r0,#0x28]         ;502
00071c  e1800001          ORR      r0,r0,r1              ;502
000720  e1c400b8          STRH     r0,[r4,#8]            ;502
                  |L1.1828|
000724  e1d440b8          LDRH     r4,[r4,#8]            ;507
000728  ef000003          SVC      #0x3                  ;508
00072c  e5c59000          STRB     r9,[r5,#0]            ;509
                  |L1.1840|
000730  e1a00004          MOV      r0,r4                 ;511
000734  eaffff5f          B        |L1.1208|
;;;513    /*$PAGE*/
                          ENDP

                  OSFlagPost PROC
;;;555    OS_FLAGS  OSFlagPost (OS_FLAG_GRP *pgrp, OS_FLAGS flags, INT8U opt, INT8U *err)
;;;556    {
000738  e92d41f0          PUSH     {r4-r8,lr}
00073c  e1a05000          MOV      r5,r0
000740  e1a06001          MOV      r6,r1
000744  e1a04002          MOV      r4,r2
000748  e1a07003          MOV      r7,r3

⌨️ 快捷键说明

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