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

📄 os_core.lst

📁 ucOS 模拟环境
💻 LST
📖 第 1 页 / 共 5 页
字号:
       389     
       390  E  #if 1 > 0
       391     typedef struct os_mutex_data {
       392  E  #if 4 <= 63
       393  E      INT8U   OSEventTbl[((4) / 8 + 1)];   
       394         INT8U   OSEventGrp;                     /* Group corresponding to tasks waiting for event to occur */
       395     #else
       396 X       INT16U  OSEventTbl[OS_EVENT_TBL_SIZE];  /* List of tasks waiting for event to occur                */
       397 X       INT16U  OSEventGrp;                     /* Group corresponding to tasks waiting for event to occur */
       398     #endif
       399         INT8U   OSValue;                        /* Mutex value (0 = used, 1 = available)                   */
       400         INT8U   OSOwnerPrio;                    /* Mutex owner's task priority or 0xFF if no owner         */
       401         INT8U   OSMutexPIP;                     /* Priority Inheritance Priority or 0xFF if no owner       */
       402     } OS_MUTEX_DATA;
       403     #endif
       404     
       405     /*
       406     *********************************************************************************************************
       407     *                                          MESSAGE QUEUE DATA
       408     *********************************************************************************************************
       409     */
       410     
       411  E  #if 1 > 0
       412     typedef struct os_q {                   /* QUEUE CONTROL BLOCK                                         */
       413         struct os_q   *OSQPtr;              /* Link to next queue control block in list of free blocks     */
       414         void         **OSQStart;            /* Pointer to start of queue data                              */
       415         void         **OSQEnd;              /* Pointer to end   of queue data                              */
       416         void         **OSQIn;               /* Pointer to where next message will be inserted  in   the Q  */
       417         void         **OSQOut;              /* Pointer to where next message will be extracted from the Q  */
       418         INT16U         OSQSize;             /* Size of queue (maximum number of entries)                   */
       419         INT16U         OSQEntries;          /* Current number of entries in the queue                      */
       420     } OS_Q;
       421     
       422     
       423     typedef struct os_q_data {
       424         void          *OSMsg;               /* Pointer to next message to be extracted from queue          */
       425         INT16U         OSNMsgs;             /* Number of messages in message queue                         */
       426         INT16U         OSQSize;             /* Size of message queue                                       */
       427  E  #if 4 <= 63
       428  E      INT8U          OSEventTbl[((4) / 8 + 1)];   
       429         INT8U          OSEventGrp;          /* Group corresponding to tasks waiting for event to occur     */
       430     #else
       431 X       INT16U         OSEventTbl[OS_EVENT_TBL_SIZE];  /* List of tasks waiting for event to occur         */
       432 X       INT16U         OSEventGrp;          /* Group corresponding to tasks waiting for event to occur     */
       433     #endif
       434     } OS_Q_DATA;
       435     #endif
       436     
       437     /*
       438     *********************************************************************************************************
       439     *                                           SEMAPHORE DATA
       440     *********************************************************************************************************
       441     */
       442     
       443  E  #if 1 > 0
       444     typedef struct os_sem_data {
       445         INT16U  OSCnt;                          /* Semaphore count                                         */
       446  E  #if 4 <= 63
       447  E      INT8U   OSEventTbl[((4) / 8 + 1)];   
       448         INT8U   OSEventGrp;                     /* Group corresponding to tasks waiting for event to occur */
       449     #else
       450 X       INT16U  OSEventTbl[OS_EVENT_TBL_SIZE];  /* List of tasks waiting for event to occur                */
       451 X       INT16U  OSEventGrp;                     /* Group corresponding to tasks waiting for event to occur */
       452     #endif
       453     } OS_SEM_DATA;
       454     #endif
       455     
       456     /*
       457     *********************************************************************************************************
       458     *                                            TASK STACK DATA
       459     *********************************************************************************************************
       460     */
       461     
       462  E  #if 0 > 0
       463 X   typedef struct os_stk_data {
       464 X       INT32U  OSFree;                    /* Number of free bytes on the stack                            */
       465 X       INT32U  OSUsed;                    /* Number of bytes used on the stack                            */
       466 X   } OS_STK_DATA;
       467     #endif
       468     
       469     /*$PAGE*/ 
       470     /*
       471     *********************************************************************************************************
       472     *                                          TASK CONTROL BLOCK
       473     *********************************************************************************************************
       474     */
       475     
       476     typedef struct os_tcb {
       477         OS_STK          *OSTCBStkPtr;      /* Pointer to current top of stack                              */
       478     
       479  E  #if 0 > 0
       480 X       void            *OSTCBExtPtr;      /* Pointer to user definable data for TCB extension             */
       481 X       OS_STK          *OSTCBStkBottom;   /* Pointer to bottom of stack                                   */
       482 X       INT32U           OSTCBStkSize;     /* Size of task stack (in number of stack elements)             */
       483 X       INT16U           OSTCBOpt;         /* Task options as passed by OSTaskCreateExt()                  */
       484 X       INT16U           OSTCBId;          /* Task ID (0..65535)                                           */
       485     #endif
       486     
       487         struct os_tcb   *OSTCBNext;        /* Pointer to next     TCB in the TCB list                      */
       488         struct os_tcb   *OSTCBPrev;        /* Pointer to previous TCB in the TCB list                      */
       489     
       490  E  #if (((1 > 0) && (2 > 0)) || (1 > 0) || (1 > 0) || (1 > 0))
       491         OS_EVENT        *OSTCBEventPtr;    /* Pointer to event control block                               */
       492     #endif
       493     
       494  E  #if ((1 > 0) && (2 > 0)) || (1 > 0)
       495         void            *OSTCBMsg;         /* Message received from OSMboxPost() or OSQPost()              */
       496     #endif
       497     
       498  E  #if (280u >= 251) && (1 > 0) && (0 > 0)
       499 X   #if OS_TASK_DEL_EN > 0
       500 X       OS_FLAG_NODE    *OSTCBFlagNode;    /* Pointer to event flag node                                   */
       501 X   #endif
       502 X       OS_FLAGS         OSTCBFlagsRdy;    /* Event flags that made task ready to run                      */
       503     #endif
       504     
       505         INT16U           OSTCBDly;         /* Nbr ticks to delay task or, timeout waiting for event        */
       506         INT8U            OSTCBStat;        /* Task status                                                  */
       507         BOOLEAN          OSTCBPendTO;      /* Flag indicating PEND timed out (TRUE == timed out)           */
       508         INT8U            OSTCBPrio;        /* Task priority (0 == highest)                                 */
       509     
       510         INT8U            OSTCBX;           /* Bit position in group  corresponding to task priority        */
       511         INT8U            OSTCBY;           /* Index into ready table corresponding to task priority        */
       512  E  #if 4 <= 63
       513         INT8U            OSTCBBitX;        /* Bit mask to access bit position in ready table               */
       514         INT8U            OSTCBBitY;        /* Bit mask to access bit position in ready group               */
       515     #else
       516 X       INT16U           OSTCBBitX;        /* Bit mask to access bit position in ready table               */
       517 X       INT16U           OSTCBBitY;        /* Bit mask to access bit position in ready group               */
       518     #endif
       519     
       520  E  #if 0 > 0
       521 X       INT8U            OSTCBDelReq;      /* Indicates whether a task needs to delete itself              */
       522     #endif
       523     
       524  E  #if 0 > 0
       525 X       INT32U           OSTCBCtxSwCtr;    /* Number of time the task was switched in                      */
       526 X       INT32U           OSTCBCyclesTot;   /* Total number of clock cycles the task has been running       */
       527 X       INT32U           OSTCBCyclesStart; /* Snapshot of cycle counter at start of task resumption        */
       528 X       OS_STK          *OSTCBStkBase;     /* Pointer to the beginning of the task stack                   */
       529 X       INT32U           OSTCBStkUsed;     /* Number of bytes used from the stack                          */
       530     #endif
       531     
       532  E  #if 0 > 1
       533 X       INT8U            OSTCBTaskName[OS_TASK_NAME_SIZE];
       534     #endif
       535     } OS_TCB;
       536     
       537     /*$PAGE*/ 
       538     /*
       539     *********************************************************************************************************
       540     *                                            GLOBAL VARIABLES
       541     *********************************************************************************************************
       542     */
       543     
       544  E    INT32U            OSCtxSwCtr;                
       545     
       546  E  #if (((1 > 0) && (2 > 0)) || (1 > 0) || (1 > 0) || (1 > 0)) && (5 > 0)
       547  E    OS_EVENT         *OSEventFreeList;           
       548  E    OS_EVENT          OSEventTbl[5]; 
       549     #endif
       550     
       551  E  #if (280u >= 251) && (1 > 0) && (0 > 0)
       552 X   OS_EXT  OS_FLAG_GRP       OSFlagTbl[OS_MAX_FLAGS];  /* Table containing event flag groups              */
       553 X   OS_EXT  OS_FLAG_GRP      *OSFlagFreeList;           /* Pointer to free list of event flag groups       */
       554     #endif
       555     
       556  E  #if 1 > 0
       557  E    INT8S             OSCPUUsage;                
       558  E    INT32U            OSIdleCtrMax;              
       559  E    INT32U            OSIdleCtrRun;              
       560  E    BOOLEAN           OSStatRdy;                 
       561  E    OS_STK            OSTaskStatStk[50];       
       562     #endif
       563     
       564  E    INT8U             OSIntNesting;              
       565     
       566  E    INT8U             OSLockNesting;             
       567     
       568  E    INT8U             OSPrioCur;                 
       569  E    INT8U             OSPrioHighRdy;             
       570     
       571  E  #if 4 <= 63
       572  E    INT8U             OSRdyGrp;                         
       573  E    INT8U             OSRdyTbl[((4) / 8 + 1)];        
       574     #else
       575 X   OS_EXT  INT16U            OSRdyGrp;                        /* Ready list group                         */
       576 X   OS_EXT  INT16U            OSRdyTbl[OS_RDY_TBL_SIZE];       /* Table of tasks which are ready to run    */
       577     #endif
       578     
       579  E    BOOLEAN           OSRunning;                        
       580     
       581  E    INT8U             OSTaskCtr;                        
       582     
       583  E    volatile  INT32U  OSIdleCtr;                                  
       584     
       585  E    OS_STK            OSTaskIdleStk[25];       
       586     
       587     
       588  E    OS_TCB           *OSTCBCur;                         
       589  E    OS_TCB           *OSTCBFreeList;                    
       590  E    OS_TCB           *OSTCBHighRdy;                     
       591  E    OS_TCB           *OSTCBList;                        
       592  E    OS_TCB           *OSTCBPrioTbl[4 + 1]; 
       593  E    OS_TCB            OSTCBTbl[3 + 2u];    
       594     
       595  E  #if 0 > 0
       596 X   OS_EXT  INT8U             OSTickStepState;          /* Indicates the state of the tick step feature    */
       597     #endif
       598     
       599  E  #if (1 > 0) && (0 > 0)
       600 X   OS_EXT  OS_MEM           *OSMemFreeList;            /* Pointer to free list of memory partitions       */
       601 X   OS_EXT  OS_MEM            OSMemTbl[OS_MAX_MEM_PART];/* Storage for memory partition manager            */
       602     #endif
       603     
       604  E  #if (1 > 0) && (2 > 0)

⌨️ 快捷键说明

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