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

📄 os_task.lst

📁 在51上运行的小的OS系统
💻 LST
📖 第 1 页 / 共 5 页
字号:
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 + -