gzqaqa 发表于 2009-4-21 22:28:00

在ucos中,获取了某任务的OS_TCB后,应该重点观察OS_TCB里面的哪几成员

typedef struct os_tcb {
    OS_STK          *OSTCBStkPtr;      /* Pointer to current top of stack                              */

#if OS_TASK_CREATE_EXT_EN > 0
    void            *OSTCBExtPtr;      /* Pointer to user definable data for TCB extension             */
    OS_STK          *OSTCBStkBottom;   /* Pointer to bottom of stack                                 */
    INT32U         OSTCBStkSize;   /* Size of task stack (in number of stack elements)             */
    INT16U         OSTCBOpt;         /* Task options as passed by OSTaskCreateExt()                  */
    INT16U         OSTCBId;          /* Task ID (0..65535)                                           */
#endif

    struct os_tcb   *OSTCBNext;      /* Pointer to next   TCB in the TCB list                      */
    struct os_tcb   *OSTCBPrev;      /* Pointer to previous TCB in the TCB list                      */

#if OS_EVENT_EN
    OS_EVENT      *OSTCBEventPtr;    /* Pointer to event control block                               */
#endif

#if ((OS_Q_EN > 0) && (OS_MAX_QS > 0)) || (OS_MBOX_EN > 0)
    void            *OSTCBMsg;         /* Message received from OSMboxPost() or OSQPost()            */
#endif

#if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)
#if OS_TASK_DEL_EN > 0
    OS_FLAG_NODE    *OSTCBFlagNode;    /* Pointer to event flag node                                 */
#endif   
    OS_FLAGS         OSTCBFlagsRdy;    /* Event flags that made task ready to run                      */
#endif

    INT16U         OSTCBDly;         /* Nbr ticks to delay task or, timeout waiting for event      */
    INT8U            OSTCBStat;      /* Task status                                                */
    BOOLEAN          OSTCBPendTO;      /* Flag indicating PEND timed out (TRUE == timed out)         */
    INT8U            OSTCBPrio;      /* Task priority (0 == highest, 63 == lowest)                   */

    INT8U            OSTCBX;         /* Bit position in groupcorresponding to task priority (0..7) */
    INT8U            OSTCBY;         /* Index into ready table corresponding to task priority      */
    INT8U            OSTCBBitX;      /* Bit mask to access bit position in ready table               */
    INT8U            OSTCBBitY;      /* Bit mask to access bit position in ready group               */

#if OS_TASK_DEL_EN > 0
    INT8U            OSTCBDelReq;      /* Indicates whether a task needs to delete itself            */
#endif

#if OS_TASK_PROFILE_EN > 0
    INT32U         OSTCBCtxSwCtr;    /* Number of time the task was switched in                      */
    INT32U         OSTCBCyclesTot;   /* Total number of clock cycles the task has been running       */
    INT32U         OSTCBCyclesStart; /* Snapshot of cycle counter at start of task resumption      */
    OS_STK          *OSTCBStkBase;   /* Pointer to the beginning of the task stack                   */
    INT32U         OSTCBStkUsed;   /* Number of bytes used from the stack                        */
#endif

#if OS_TASK_NAME_SIZE > 1
    char             OSTCBTaskName;
#endif
} OS_TCB;

richter_t 发表于 2009-5-23 22:28:17

我一般看OSTCBNext/OSTCBPrev/OSTCBDly ,另外还有OSPrioCur/OSTCBCur/OSTaskCtr/OSRdyGrp/OSRdyTbl

trey21ic 发表于 2009-5-23 23:43:14

根据实际需要来定
页: [1]
查看完整版本: 在ucos中,获取了某任务的OS_TCB后,应该重点观察OS_TCB里面的哪几成员