📄 os_task.txt
字号:
;;;606 }
000394 bd10 POP {r4,pc}
|L1.918|
000396 2cff CMP r4,#0xff ;587
000398 d109 BNE |L1.942|
00039a f7fff7ff BL OS_CPU_SR_Save
00039e 4917 LDR r1,|L1.1020|
0003a0 6809 LDR r1,[r1,#0] ;589 ; OSTCBCur
0003a2 f891f891 LDRB r4,[r1,#0x37] ;589
0003a6 f7fff7ff BL OS_CPU_SR_Restore
0003aa 4620 MOV r0,r4 ;591
0003ac bd10 POP {r4,pc}
|L1.942|
0003ae f7fff7ff BL OS_CPU_SR_Save
0003b2 4911 LDR r1,|L1.1016|
0003b4 f851f851 LDR r1,[r1,r4,LSL #2] ;594
0003b8 b919 CBNZ r1,|L1.962|
0003ba f7fff7ff BL OS_CPU_SR_Restore
0003be 2043 MOVS r0,#0x43 ;597
0003c0 bd10 POP {r4,pc}
|L1.962|
0003c2 2901 CMP r1,#1 ;599
0003c4 d103 BNE |L1.974|
0003c6 f7fff7ff BL OS_CPU_SR_Restore
0003ca 203d MOVS r0,#0x3d ;601
0003cc bd10 POP {r4,pc}
|L1.974|
0003ce 223f MOVS r2,#0x3f ;603
0003d0 f881f881 STRB r2,[r1,#0x37] ;603
0003d4 f7fff7ff BL OS_CPU_SR_Restore
0003d8 2000 MOVS r0,#0 ;605
0003da bd10 POP {r4,pc}
;;;607 #endif
ENDP
OSTaskNameGet PROC
;;;635 INT8U OSTaskNameGet (INT8U prio, INT8U *pname, INT8U *perr)
;;;636 {
0003dc e92de92d PUSH {r4-r8,lr}
0003e0 4606 MOV r6,r0
0003e2 460f MOV r7,r1
0003e4 4615 MOV r5,r2
;;;637 OS_TCB *ptcb;
;;;638 INT8U len;
;;;639 #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
;;;640 OS_CPU_SR cpu_sr = 0;
;;;641 #endif
;;;642
;;;643
;;;644
;;;645 #if OS_ARG_CHK_EN > 0
;;;646 if (perr == (INT8U *)0) { /* Validate 'perr' */
;;;647 return (0);
;;;648 }
;;;649 if (prio > OS_LOWEST_PRIO) { /* Task priority valid ? */
;;;650 if (prio != OS_PRIO_SELF) {
;;;651 *perr = OS_ERR_PRIO_INVALID; /* No */
;;;652 return (0);
;;;653 }
;;;654 }
;;;655 if (pname == (INT8U *)0) { /* Is 'pname' a NULL pointer? */
;;;656 *perr = OS_ERR_PNAME_NULL; /* Yes */
;;;657 return (0);
;;;658 }
;;;659 #endif
;;;660 if (OSIntNesting > 0) { /* See if trying to call from an ISR */
0003e6 4809 LDR r0,|L1.1036|
0003e8 7800 LDRB r0,[r0,#0] ; OSIntNesting
0003ea b1c8 CBZ r0,|L1.1056|
;;;661 *perr = OS_ERR_NAME_GET_ISR;
0003ec 2011 MOVS r0,#0x11
0003ee 7028 STRB r0,[r5,#0]
;;;662 return (0);
0003f0 2000 MOVS r0,#0
|L1.1010|
;;;663 }
;;;664 OS_ENTER_CRITICAL();
;;;665 if (prio == OS_PRIO_SELF) { /* See if caller desires it's own name */
;;;666 prio = OSTCBCur->OSTCBPrio;
;;;667 }
;;;668 ptcb = OSTCBPrioTbl[prio];
;;;669 if (ptcb == (OS_TCB *)0) { /* Does task exist? */
;;;670 OS_EXIT_CRITICAL(); /* No */
;;;671 *perr = OS_ERR_TASK_NOT_EXIST;
;;;672 return (0);
;;;673 }
;;;674 if (ptcb == OS_TCB_RESERVED) { /* Task assigned to a Mutex? */
;;;675 OS_EXIT_CRITICAL(); /* Yes */
;;;676 *perr = OS_ERR_TASK_NOT_EXIST;
;;;677 return (0);
;;;678 }
;;;679 len = OS_StrCopy(pname, ptcb->OSTCBTaskName); /* Yes, copy name from TCB */
;;;680 OS_EXIT_CRITICAL();
;;;681 *perr = OS_ERR_NONE;
;;;682 return (len);
;;;683 }
0003f2 e8bde8bd POP {r4-r8,pc}
0003f6 0000 DCW 0x0000
|L1.1016|
0003f8 00000000 DCD OSTCBPrioTbl
|L1.1020|
0003fc 00000000 DCD OSTCBCur
|L1.1024|
000400 00000000 DCD OSRdyTbl
|L1.1028|
000404 00000000 DCD OSRdyGrp
|L1.1032|
000408 00000000 DCD OSRunning
|L1.1036|
00040c 00000000 DCD OSIntNesting
|L1.1040|
000410 00000000 DCD OSLockNesting
|L1.1044|
000414 00000000 DCD OSTaskCtr
|L1.1048|
000418 00000000 DCD OSTCBList
|L1.1052|
00041c 00000000 DCD OSTCBFreeList
|L1.1056|
000420 f7fff7ff BL OS_CPU_SR_Save
000424 4604 MOV r4,r0 ;664
000426 2eff CMP r6,#0xff ;665
000428 d103 BNE |L1.1074|
00042a 489c LDR r0,|L1.1692|
00042c 6800 LDR r0,[r0,#0] ;666 ; OSTCBCur
00042e f890f890 LDRB r6,[r0,#0x32] ;666
|L1.1074|
000432 489b LDR r0,|L1.1696|
000434 f850f850 LDR r1,[r0,r6,LSL #2] ;668
000438 2643 MOVS r6,#0x43 ;669
00043a b929 CBNZ r1,|L1.1096|
00043c 4620 MOV r0,r4 ;670
00043e f7fff7ff BL OS_CPU_SR_Restore
000442 702e STRB r6,[r5,#0] ;671
000444 2000 MOVS r0,#0 ;672
000446 e7d4 B |L1.1010|
|L1.1096|
000448 2901 CMP r1,#1 ;674
00044a d105 BNE |L1.1112|
00044c 4620 MOV r0,r4 ;675
00044e f7fff7ff BL OS_CPU_SR_Restore
000452 702e STRB r6,[r5,#0] ;676
000454 2000 MOVS r0,#0 ;677
000456 e7cc B |L1.1010|
|L1.1112|
000458 314c ADDS r1,r1,#0x4c ;679
00045a 4638 MOV r0,r7 ;679
00045c f7fff7ff BL OS_StrCopy
000460 4606 MOV r6,r0 ;679
000462 4620 MOV r0,r4 ;680
000464 f7fff7ff BL OS_CPU_SR_Restore
000468 2000 MOVS r0,#0 ;681
00046a 7028 STRB r0,[r5,#0] ;681
00046c 4630 MOV r0,r6 ;682
00046e e7c0 B |L1.1010|
;;;684 #endif
ENDP
OSTaskNameSet PROC
;;;714 void OSTaskNameSet (INT8U prio, INT8U *pname, INT8U *perr)
;;;715 {
000470 e92de92d PUSH {r4-r8,lr}
000474 4605 MOV r5,r0
000476 460f MOV r7,r1
000478 4614 MOV r4,r2
;;;716 INT8U len;
;;;717 OS_TCB *ptcb;
;;;718 #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
;;;719 OS_CPU_SR cpu_sr = 0;
;;;720 #endif
;;;721
;;;722
;;;723
;;;724 #if OS_ARG_CHK_EN > 0
;;;725 if (perr == (INT8U *)0) { /* Validate 'perr' */
;;;726 return;
;;;727 }
;;;728 if (prio > OS_LOWEST_PRIO) { /* Task priority valid ? */
;;;729 if (prio != OS_PRIO_SELF) {
;;;730 *perr = OS_ERR_PRIO_INVALID; /* No */
;;;731 return;
;;;732 }
;;;733 }
;;;734 if (pname == (INT8U *)0) { /* Is 'pname' a NULL pointer? */
;;;735 *perr = OS_ERR_PNAME_NULL; /* Yes */
;;;736 return;
;;;737 }
;;;738 #endif
;;;739 if (OSIntNesting > 0) { /* See if trying to call from an ISR */
00047a 488a LDR r0,|L1.1700|
00047c 7800 LDRB r0,[r0,#0] ; OSIntNesting
00047e b110 CBZ r0,|L1.1158|
;;;740 *perr = OS_ERR_NAME_SET_ISR;
000480 2012 MOVS r0,#0x12
000482 7020 STRB r0,[r4,#0]
;;;741 return;
;;;742 }
;;;743 OS_ENTER_CRITICAL();
;;;744 if (prio == OS_PRIO_SELF) { /* See if caller desires to set it's own name */
;;;745 prio = OSTCBCur->OSTCBPrio;
;;;746 }
;;;747 ptcb = OSTCBPrioTbl[prio];
;;;748 if (ptcb == (OS_TCB *)0) { /* Does task exist? */
;;;749 OS_EXIT_CRITICAL(); /* No */
;;;750 *perr = OS_ERR_TASK_NOT_EXIST;
;;;751 return;
;;;752 }
;;;753 if (ptcb == OS_TCB_RESERVED) { /* Task assigned to a Mutex? */
;;;754 OS_EXIT_CRITICAL(); /* Yes */
;;;755 *perr = OS_ERR_TASK_NOT_EXIST;
;;;756 return;
;;;757 }
;;;758 len = OS_StrLen(pname); /* Yes, Can we fit the string in the TCB? */
;;;759 if (len > (OS_TASK_NAME_SIZE - 1)) { /* No */
;;;760 OS_EXIT_CRITICAL();
;;;761 *perr = OS_ERR_TASK_NAME_TOO_LONG;
;;;762 return;
;;;763 }
;;;764 (void)OS_StrCopy(ptcb->OSTCBTaskName, pname); /* Yes, copy to TCB */
;;;765 OS_EXIT_CRITICAL();
;;;766 *perr = OS_ERR_NONE;
;;;767 }
000484 e7b5 B |L1.1010|
|L1.1158|
000486 f7fff7ff BL OS_CPU_SR_Save
00048a 4606 MOV r6,r0 ;743
00048c 2dff CMP r5,#0xff ;744
00048e d103 BNE |L1.1176|
000490 4882 LDR r0,|L1.1692|
000492 6800 LDR r0,[r0,#0] ;745 ; OSTCBCur
000494 f890f890 LDRB r5,[r0,#0x32] ;745
|L1.1176|
000498 4881 LDR r0,|L1.1696|
00049a f850f850 LDR r5,[r0,r5,LSL #2] ;747
00049e f04ff04f MOV r8,#0x43 ;748
0004a2 b92d CBNZ r5,|L1.1200|
0004a4 4630 MOV r0,r6 ;749
0004a6 f7fff7ff BL OS_CPU_SR_Restore
0004aa f884f884 STRB r8,[r4,#0] ;750
0004ae e7a0 B |L1.1010|
|L1.1200|
0004b0 2d01 CMP r5,#1 ;753
0004b2 d105 BNE |L1.1216|
0004b4 4630 MOV r0,r6 ;754
0004b6 f7fff7ff BL OS_CPU_SR_Restore
0004ba f884f884 STRB r8,[r4,#0] ;755
0004be e798 B |L1.1010|
|L1.1216|
0004c0 4638 MOV r0,r7 ;758
0004c2 f7fff7ff BL OS_StrLen
0004c6 280f CMP r0,#0xf ;759
0004c8 d905 BLS |L1.1238|
0004ca 4630 MOV r0,r6 ;760
0004cc f7fff7ff BL OS_CPU_SR_Restore
0004d0 2041 MOVS r0,#0x41 ;761
0004d2 7020 STRB r0,[r4,#0] ;761
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -