📄 os_task.lst
字号:
C51 COMPILER V8.08 OS_TASK 08/04/2008 21:49:52 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE OS_TASK
OBJECT MODULE PLACED IN OS_TASK.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE uCosii\OS_TASK.C DEBUG OBJECTEXTEND PRINT(.\OS_TASK.lst) OBJECT(OS_TASK.obj
-)
line level source
1 /*
2 *********************************************************************************************************
3 * uC/OS-II
4 * The Real-Time Kernel
5 * TASK MANAGEMENT
6 *
7 * (c) Copyright 1992-2005, Jean J. Labrosse, Weston, FL
8 * All Rights Reserved
9 *
10 * File : OS_TASK.C
11 * By : Jean J. Labrosse
12 * Version : V2.80
13 *********************************************************************************************************
14 */
15
16 #ifndef OS_MASTER_FILE
17 #include "..\arm\includes.h"
*** ERROR C141 IN LINE 83 OF UCOSII\..\ARM\OS_CPU.H: syntax error near '0x00'
*** ERROR C132 IN LINE 83 OF UCOSII\..\ARM\OS_CPU.H: 'OS_TASK_SW': not in formal parameter list
*** ERROR C141 IN LINE 84 OF UCOSII\..\ARM\OS_CPU.H: syntax error near '0x01'
*** ERROR C132 IN LINE 84 OF UCOSII\..\ARM\OS_CPU.H: '__swi': not in formal parameter list
*** ERROR C141 IN LINE 84 OF UCOSII\..\ARM\OS_CPU.H: syntax error near 'void'
*** ERROR C132 IN LINE 84 OF UCOSII\..\ARM\OS_CPU.H: '_OSStartHighRdy': not in formal parameter list
*** ERROR C141 IN LINE 85 OF UCOSII\..\ARM\OS_CPU.H: syntax error near '0x02'
*** ERROR C132 IN LINE 85 OF UCOSII\..\ARM\OS_CPU.H: '__swi': not in formal parameter list
*** ERROR C141 IN LINE 85 OF UCOSII\..\ARM\OS_CPU.H: syntax error near 'void'
*** ERROR C132 IN LINE 85 OF UCOSII\..\ARM\OS_CPU.H: 'OS_ENTER_CRITICAL': not in formal parameter list
*** ERROR C141 IN LINE 86 OF UCOSII\..\ARM\OS_CPU.H: syntax error near '0x03'
*** ERROR C132 IN LINE 86 OF UCOSII\..\ARM\OS_CPU.H: '__swi': not in formal parameter list
*** ERROR C141 IN LINE 86 OF UCOSII\..\ARM\OS_CPU.H: syntax error near 'void'
*** ERROR C132 IN LINE 86 OF UCOSII\..\ARM\OS_CPU.H: 'OS_EXIT_CRITICAL': not in formal parameter list
*** ERROR C141 IN LINE 88 OF UCOSII\..\ARM\OS_CPU.H: syntax error near '0x40'
*** ERROR C132 IN LINE 88 OF UCOSII\..\ARM\OS_CPU.H: '__swi': not in formal parameter list
*** ERROR C141 IN LINE 88 OF UCOSII\..\ARM\OS_CPU.H: syntax error near 'void'
*** ERROR C132 IN LINE 88 OF UCOSII\..\ARM\OS_CPU.H: '_GetOSFunctionAddr': not in formal parameter list
*** ERROR C141 IN LINE 89 OF UCOSII\..\ARM\OS_CPU.H: syntax error near '0x41'
*** ERROR C132 IN LINE 89 OF UCOSII\..\ARM\OS_CPU.H: '__swi': not in formal parameter list
*** ERROR C141 IN LINE 89 OF UCOSII\..\ARM\OS_CPU.H: syntax error near 'void'
*** ERROR C132 IN LINE 89 OF UCOSII\..\ARM\OS_CPU.H: '_GetUsrFunctionAddr': not in formal parameter list
*** ERROR C141 IN LINE 90 OF UCOSII\..\ARM\OS_CPU.H: syntax error near '0x42'
*** ERROR C132 IN LINE 90 OF UCOSII\..\ARM\OS_CPU.H: '__swi': not in formal parameter list
*** ERROR C141 IN LINE 90 OF UCOSII\..\ARM\OS_CPU.H: syntax error near 'void'
*** ERROR C132 IN LINE 90 OF UCOSII\..\ARM\OS_CPU.H: 'OSISRBegin': not in formal parameter list
*** ERROR C141 IN LINE 91 OF UCOSII\..\ARM\OS_CPU.H: syntax error near '0x43'
*** ERROR C132 IN LINE 91 OF UCOSII\..\ARM\OS_CPU.H: '__swi': not in formal parameter list
*** ERROR C141 IN LINE 91 OF UCOSII\..\ARM\OS_CPU.H: syntax error near 'int'
*** ERROR C132 IN LINE 91 OF UCOSII\..\ARM\OS_CPU.H: 'OSISRNeedSwap': not in formal parameter list
*** ERROR C141 IN LINE 93 OF UCOSII\..\ARM\OS_CPU.H: syntax error near '0x80'
*** ERROR C132 IN LINE 93 OF UCOSII\..\ARM\OS_CPU.H: '__swi': not in formal parameter list
*** ERROR C141 IN LINE 93 OF UCOSII\..\ARM\OS_CPU.H: syntax error near 'void'
*** ERROR C132 IN LINE 93 OF UCOSII\..\ARM\OS_CPU.H: 'ChangeToSYSMode': not in formal parameter list
*** ERROR C141 IN LINE 94 OF UCOSII\..\ARM\OS_CPU.H: syntax error near '0x81'
*** ERROR C132 IN LINE 94 OF UCOSII\..\ARM\OS_CPU.H: '__swi': not in formal parameter list
*** ERROR C141 IN LINE 94 OF UCOSII\..\ARM\OS_CPU.H: syntax error near 'void'
C51 COMPILER V8.08 OS_TASK 08/04/2008 21:49:52 PAGE 2
*** ERROR C132 IN LINE 94 OF UCOSII\..\ARM\OS_CPU.H: 'ChangeToUSRMode': not in formal parameter list
*** ERROR C141 IN LINE 95 OF UCOSII\..\ARM\OS_CPU.H: syntax error near '0x82'
*** ERROR C132 IN LINE 95 OF UCOSII\..\ARM\OS_CPU.H: '__swi': not in formal parameter list
*** ERROR C141 IN LINE 95 OF UCOSII\..\ARM\OS_CPU.H: syntax error near 'void'
*** ERROR C132 IN LINE 95 OF UCOSII\..\ARM\OS_CPU.H: '_TaskIsARM': not in formal parameter list
*** ERROR C141 IN LINE 96 OF UCOSII\..\ARM\OS_CPU.H: syntax error near '0x83'
*** ERROR C132 IN LINE 96 OF UCOSII\..\ARM\OS_CPU.H: '__swi': not in formal parameter list
*** ERROR C141 IN LINE 96 OF UCOSII\..\ARM\OS_CPU.H: syntax error near 'void'
*** ERROR C132 IN LINE 96 OF UCOSII\..\ARM\OS_CPU.H: '_TaskIsTHUMB': not in formal parameter list
*** ERROR C127 IN LINE 113 OF UCOSII\..\ARM\OS_CPU.H: 'OsEnterSum': invalid storage class
*** ERROR C127 IN LINE 284 OF UCOSII\..\UCOSII\UCOS_II.H: 'OS_EVENT': invalid storage class
*** ERROR C127 IN LINE 301 OF UCOSII\..\UCOSII\UCOS_II.H: 'OS_FLAGS': invalid storage class
*** ERROR C141 IN LINE 312 OF UCOSII\..\UCOSII\UCOS_II.H: syntax error near 'OS_FLAGS'
*** ERROR C127 IN LINE 312 OF UCOSII\..\UCOSII\UCOS_II.H: 'OS_FLAGS': invalid storage class
*** ERROR C141 IN LINE 312 OF UCOSII\..\UCOSII\UCOS_II.H: syntax error near 'OSFlagFlags'
*** ERROR C127 IN LINE 312 OF UCOSII\..\UCOSII\UCOS_II.H: 'OSFlagFlags': invalid storage class
*** ERROR C132 IN LINE 314 OF UCOSII\..\UCOSII\UCOS_II.H: 'OSFlagName': not in formal parameter list
*** ERROR C141 IN LINE 316 OF UCOSII\..\UCOSII\UCOS_II.H: syntax error near '}'
*** ERROR C141 IN LINE 325 OF UCOSII\..\UCOSII\UCOS_II.H: syntax error near 'OS_FLAGS'
*** ERROR C129 IN LINE 325 OF UCOSII\..\UCOSII\UCOS_II.H: missing ';' before 'OSFlagNodeFlags'
18 #endif
19
20 /*
21 *********************************************************************************************************
22 * CHANGE PRIORITY OF A TASK
23 *
24 * Description: This function allows you to change the priority of a task dynamically. Note that the new
25 * priority MUST be available.
26 *
27 * Arguments : oldp is the old priority
28 *
29 * newp is the new priority
30 *
31 * Returns : OS_NO_ERR is the call was successful
32 * OS_PRIO_INVALID if the priority you specify is higher that the maximum allowed
33 * (i.e. >= OS_LOWEST_PRIO)
34 * OS_PRIO_EXIST if the new priority already exist.
35 * OS_PRIO_ERR there is no task with the specified OLD priority (i.e. the OLD task does
36 * not exist.
37 * OS_TASK_NOT_EXIST if the task is assigned to a Mutex PIP.
38 *********************************************************************************************************
39 */
40
41 #if OS_TASK_CHANGE_PRIO_EN > 0
42 INT8U OSTaskChangePrio (INT8U oldprio, INT8U newprio)
43 {
44 #if OS_EVENT_EN
45 OS_EVENT *pevent;
46 #endif
47 OS_TCB *ptcb;
48 INT8U x;
49 INT8U y;
50 #if OS_LOWEST_PRIO <= 63
51 INT8U bitx;
52 INT8U bity;
53 #else
INT16U bitx;
INT16U bity;
#endif
57 INT8U y_old;
58 #if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr = 0; /* Storage for CPU status register */
C51 COMPILER V8.08 OS_TASK 08/04/2008 21:49:52 PAGE 3
#endif
61
62
63
64 #if OS_ARG_CHK_EN > 0
65 if (oldprio >= OS_LOWEST_PRIO) {
66 if (oldprio != OS_PRIO_SELF) {
67 return (OS_PRIO_INVALID);
68 }
69 }
70 if (newprio >= OS_LOWEST_PRIO) {
71 return (OS_PRIO_INVALID);
72 }
73 #endif
74 OS_ENTER_CRITICAL();
75 if (OSTCBPrioTbl[newprio] != (OS_TCB *)0) { /* New priority must not already exist */
76 OS_EXIT_CRITICAL();
77 return (OS_PRIO_EXIST);
78 }
79 if (oldprio == OS_PRIO_SELF) { /* See if changing self */
80 oldprio = OSTCBCur->OSTCBPrio; /* Yes, get priority */
81 }
82 ptcb = OSTCBPrioTbl[oldprio];
83 if (ptcb == (OS_TCB *)0) { /* Does task to change exist? */
84 OS_EXIT_CRITICAL(); /* No, can't change its priority! */
85 return (OS_PRIO_ERR);
86 }
87 if (ptcb == (OS_TCB *)1) { /* Is task assigned to Mutex */
88 OS_EXIT_CRITICAL(); /* No, can't change its priority! */
89 return (OS_TASK_NOT_EXIST);
90 }
91 #if OS_LOWEST_PRIO <= 63
92 y = newprio >> 3; /* Yes, compute new TCB fields */
93 x = newprio & 0x07;
94 #else
y = (newprio >> 4) & 0xFF;
x = newprio & 0x0F;
#endif
98
99 bity = 1 << y;
100 bitx = 1 << x;
101 OSTCBPrioTbl[oldprio] = (OS_TCB *)0; /* Remove TCB from old priority */
102 OSTCBPrioTbl[newprio] = ptcb; /* Place pointer to TCB @ new priority */
103 y_old = ptcb->OSTCBY;
104 if ((OSRdyTbl[y_old] & ptcb->OSTCBBitX) != 0) { /* If task is ready make it not */
105 OSRdyTbl[y_old] &= ~ptcb->OSTCBBitX;
106 if (OSRdyTbl[y_old] == 0) {
107 OSRdyGrp &= ~ptcb->OSTCBBitY;
108 }
109 OSRdyGrp |= bity; /* Make new priority ready to run */
110 OSRdyTbl[y] |= bitx;
111 #if OS_EVENT_EN
112 } else { /* Task was not ready ... */
113 pevent = ptcb->OSTCBEventPtr;
114 if (pevent != (OS_EVENT *)0) { /* ... remove from event wait list */
115 pevent->OSEventTbl[y_old] &= ~ptcb->OSTCBBitX;
116 if (pevent->OSEventTbl[y_old] == 0) {
117 pevent->OSEventGrp &= ~ptcb->OSTCBBitY;
118 }
119 pevent->OSEventGrp |= bity; /* Add new priority to wait list */
120 pevent->OSEventTbl[y] |= bitx;
121 }
C51 COMPILER V8.08 OS_TASK 08/04/2008 21:49:52 PAGE 4
122 #endif
123 }
124 ptcb->OSTCBPrio = newprio; /* Set new task priority */
125 ptcb->OSTCBY = y;
126 ptcb->OSTCBX = x;
127 ptcb->OSTCBBitY = bity;
128 ptcb->OSTCBBitX = bitx;
129 OS_EXIT_CRITICAL();
130 OS_Sched(); /* Run highest priority task ready */
131 return (OS_NO_ERR);
132 }
133 #endif
134 /*$PAGE*/
135 /*
136 *********************************************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -