专栏中心

EEPW首页 > 专栏 > 任务控制块TCB

任务控制块TCB

发布人:啸风 时间:2013-06-10 来源:工程师 发布文章

    任务控制块是任务管理的核心数据结构,操作系统在启动的时候,首先要在内存中创建一定数量的任务控制块。任务控制块的数量等于操作系统中能同时管理的做多任务数。

源码:ucos-II 2.91

/*

*********************************************************************************************************
*                                         任务控制块
*********************************************************************************************************
*/


typedef struct os_tcb {

    //typedef unsigned int  OS_STK; ------>OS_CPU.H文件中定义

    OS_STK          *OSTCBStkPtr;           /* Pointer to current top of stack   */


#if OS_TASK_CREATE_EXT_EN > 0u

    //如果OS_TASK_CREATE_EXT_EN > 0u,表示配置了任务创建扩展功能,以下几个定义语句才有效;

    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_EVENT_EN) && (OS_EVENT_MULTI_EN > 0u)
    OS_EVENT       **OSTCBEventMultiPtr;    /* Pointer to multiple event control blocks  */
#endif


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


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


    INT32U            OSTCBDly;              /* Nbr ticks to delay task or, timeout waiting for event   */
    INT8U              OSTCBStat;             /* Task      status                                        */
    INT8U              OSTCBStatPend;      /* Task PEND status                                        */
    INT8U              OSTCBPrio;             /* Task priority (0 == highest)                            */


    INT8U              OSTCBX;                /* Bit position in group  corresponding to task priority   */
    INT8U              OSTCBY;                /* Index into ready table corresponding to task priority   */
    OS_PRIO          OSTCBBitX;             /* Bit mask to access bit position in ready table          */
    OS_PRIO          OSTCBBitY;             /* Bit mask to access bit position in ready group          */


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


#if OS_TASK_PROFILE_EN > 0u
    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_EN > 0u
    INT8U           *OSTCBTaskName;
#endif


#if OS_TASK_REG_TBL_SIZE > 0u
    INT32U           OSTCBRegTbl[OS_TASK_REG_TBL_SIZE];
#endif
} OS_TCB;

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

英特尔推出第二代酷睿系列处理器,搭载实时处理性能并扩充边缘 AI 产品矩阵

大连Moblin研讨会视频 II

视频 2010-04-19

IDF2010:解读个人电脑

视频 2010-04-22

EZ-USBFX2单片机CY7C68013的特性介绍

FM1702or1704or1075读非接触卡芯片(无水印版)

2009 “英特尔杯”全国计算机多核程序设计大赛2

CPU借AI热潮重获青睐,再度 “变酷”

智能计算 2026-03-10

Emerson推出NI USRP X420软件定义无线电

EM78系列OTP型新一代8位单片机特点

意法半导体Stellar P3E:车载边缘AI MCU 开启汽车多合一电控新时代

EMC 汇编语言指令集

Gartner提出挖掘人工智能价值的三大核心支柱

IDF 2010 MeeGo展区QT介绍

视频 2010-04-19

2009 “英特尔杯”全国计算机多核程序设计大赛1

伊朗局势紧张,亚洲汽车供应链面临冲击

IAR扩展嵌入式开发平台,推出面向安全关键型应用的长期支持(LTS)服务

Groq向三星提出AI芯片扩产需求,推论芯片市场或迎爆发

智能计算 2026-03-10

SEALSQ推出量子系统PQC栈

Nordic扩展nRF54L系列,推出入门级低功耗蓝牙SoC

ep7312芯片原理及应用

更多 培训课堂
更多 焦点
更多 视频

技术专区