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 + -
显示快捷键?