typedef struct os_tcb {
OS_STK *OSTCBStkPtr; /* 当前任务堆栈栈顶的指针 */
#if OS_TASK_CREATE_EXT_EN > 0
void *OSTCBExtPtr; /*扩展块的指针*/
OS_STK *OSTCBStkBottom; /*任务堆栈栈底的指针*/
INT32U OSTCBStkSize; /* 任务堆栈的大小*/
INT16U OSTCBOpt; /* 扩展的选项*/
INT16U OSTCBId; /* 任务ID,因为当前以任务的优先级为任务的唯一标识,所以实际使用时常使该项的值等于任务优先级*/
#endif
struct os_tcb *OSTCBNext; /*指向下一个任务控制块的指针*/
struct os_tcb *OSTCBPrev; /* 指向前一个任务控制块的指针*/
#if OS_EVENT_EN || (OS_FLAG_EN > 0)
OS_EVENT *OSTCBEventPtr; /* 指向事件控制块的指针*/
#endif
#if ((OS_Q_EN > 0) && (OS_MAX_QS > 0)) || (OS_MBOX_EN > 0)
void *OSTCBMsg; /* 来自于OSMboxPost()orOSQPost()的消息指针*/
#endif
#if (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)
#if OS_TASK_DEL_EN > 0
OS_FLAG_NODE *OSTCBFlagNode; /* 事件标志节点指针*/
#endif
OS_FLAGS OSTCBFlagsRdy; /* 使任务就绪并运行的事件标志*/
#endif
INT16U OSTCBDly; /* 任务延迟的时钟节拍数或者是等待事件的超时时间*/
INT8U OSTCBStat; /* 任务状态:睡眠、就绪、运行、等待、被中断等*/
INT8U OSTCBStatPend; /* 事件等待标志*/
INT8U OSTCBPrio; /* 任务优先级,0为最高*/
INT8U OSTCBX; /* Bit position in group corresponding to task priority */
INT8U OSTCBY; /* Index into ready table corresponding to task priority */
#if OS_LOWEST_PRIO <= 63
INT8U OSTCBBitX; /* Bit mask to access bit position in ready table */
INT8U OSTCBBitY; /* Bit mask to access bit position in ready group */
#else
INT16U OSTCBBitX; /* Bit mask to access bit position in ready table */
INT16U OSTCBBitY; /* Bit mask to access bit position in ready group */
#endif
#if OS_TASK_DEL_EN > 0
INT8U OSTCBDelReq;/* 任务删除请求标志 */
#endif
#if OS_TASK_PROFILE_EN > 0
INT32U OSTCBCtxSwCtr; /* 切换到该任务的次数*/
INT32U OSTCBCyclesTot; /* 任务已经运行的总的时钟周期数*/
INT32U OSTCBCyclesStart; /* Snapshot of cycle counter at start of task resumption*/
OS_STK *OSTCBStkBase; /* 任务堆栈的起始地址 */
INT32U OSTCBStkUsed; /* 任务堆栈中已经使用的空间*/
#endif
#if OS_TASK_NAME_SIZE > 1
INT8U OSTCBTaskName[OS_TASK_NAME_SIZE];//任务名称
#endif
} OS_TCB;