TCB是什么?解决办法
发布时间:2010-06-14 16:44:39 文章来源:www.iduyao.cn 采编人员:星星草
TCB是什么?
TCB是什么?看到描写他的数据结构是WIND_TCB ,具体是怎样的类型呢?获得TCB能对task进行什么操作呢?
------解决方案--------------------
对于信号量的部分通常是通过在TCB中确定它挂接在那个阻塞队列的队列头来体现
------解决方案--------------------
TCB是任务控制块,相当于每个任务的信息都保存在这个结构中,这样在任务切换时,这个任务的信息就可以保存在任务上下文中。
有些操作(如taskInit)需要TCB地址做参数,参看手册。
需要TCB地址时可以通过taskTcb从taskID获取TCB地址,参看手册。
WIND_TCB的具体数据结构定义在taskLib.h中有定义,是:
typedef struct windTcb /* WIND_TCB - task control block */
{
Q_NODE qNode; /* 0x00: multiway q node: rdy/pend q */
Q_NODE tickNode; /* 0x10: multiway q node: tick q */
Q_NODE activeNode; /* 0x20: multiway q node: active q */
OBJ_CORE objCore; /* 0x30: object management */
char * name; /* 0x34: pointer to task name */
int options; /* 0x38: task option bits */
UINT status; /* 0x3c: status of task */
UINT priority; /* 0x40: task's current priority */
UINT priNormal; /* 0x44: task's normal priority */
UINT priMutexCnt; /* 0x48: nested priority mutex owned */
struct semaphore * pPriMutex; /* 0x4c: pointer to inheritance mutex */
UINT lockCnt; /* 0x50: preemption lock count */
UINT tslice; /* 0x54: current count of time slice */
UINT16 swapInMask; /* 0x58: task's switch in hooks */
UINT16 swapOutMask; /* 0x5a: task's switch out hooks */
Q_HEAD * pPendQ; /* 0x5c: q head pended on (if any) */
UINT safeCnt; /* 0x60: safe-from-delete count */
Q_HEAD safetyQHead; /* 0x64: safe-from-delete q head */
FUNCPTR entry; /* 0x74: entry point of task */
char * pStackBase; /* 0x78: points to bottom of stack */
char * pStackLimit; /* 0x7c: points to stack limit */
char * pStackEnd; /* 0x80: points to init stack limit */
int errorStatus; /* 0x84: most recent task error */
int exitCode; /* 0x88: error passed to exit () */
struct sigtcb * pSignalInfo; /* 0x8c: ptr to signal info for task */
struct selContext * pSelectContext; /* 0x90: ptr to select info for task */
UINT taskTicks; /* 0x94: total number of ticks */
UINT taskIncTicks; /* 0x98: number of ticks in slice */
struct taskVar * pTaskVar; /* 0x9c: ptr to task variable list */
struct rpcModList * pRPCModList; /* 0xa0: ptr to rpc module statics */
struct fpContext * pFpContext; /* 0xa4: fpoint coprocessor context */
struct __sFILE * taskStdFp[3]; /* 0xa8: stdin,stdout,stderr fps */
int taskStd[3]; /* 0xb4: stdin,stdout,stderr fds */
char ** ppEnviron; /* 0xc0: environment var table */
int envTblSize; /* 0xc4: number of slots in table */
int nEnvVarEntries; /* 0xc8: num env vars used */
struct sm_obj_tcb * pSmObjTcb; /* 0xcc: shared mem object TCB */
int windxLock; /* 0xd0: lock for windX */
void * pComLocal; /* 0xd4: COM task-local storage ptr */
REG_SET * pExcRegSet; /* 0xd8: exception regSet ptr or NULL */
EVENTS events; /* 0xdc: event info for the task */
WDB_INFO * pWdbInfo; /* 0xe8: ptr to WDB info - future use */
void * pPthread; /* 0xec: ptr to pthread data structs */
int reserved1; /* 0xf0: possible WRS extension */
int compiler1; /* 0xf4: compiler reserved extension */
int spare1; /* 0xf8: possible user extension */
int spare2; /* 0xfc: possible user extension */
int spare3; /* 0x100: possible user extension */
int spare4; /* 0x104: possible user extension */
/* ARCHITECTURE DEPENDENT */
#if (CPU_FAMILY==MC680X0)
EXC_INFO excInfo; /* 0x108: exception info */
/* REG_SET must be aligned on a 4 byte boundary */
REG_SET regs; /* 0x11c: register set */
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
Tilcon下的Table控件问题
VxWorks5.5+Tilcon5.4环境下~~
在程序中如何在Table的最后新增一行?
------解决方案-----------------...
-
关于vxworks的inflate/deflate
请问各位大侠,在vxworks中,针对不同架构的cpu的vxworks代码中,应该是采用相同的inflate/deflate解压...
-
tornado安装问题
请高手帮忙:
问下tornado的安装过程中,如果从开始菜单直接运行tornado,会提示错误,这是因为安装还没有完成,在C盘Torn...
-
vxworks系统启动很慢
小弟最近在做一个vxworks下的项目,目前系统基本上已经搭建起来了,但是系统从flash上启动的时候非常的慢,经查看...
-
请问一下,一个任务accept产生的socket描述符怎么在另一个task的send函数中用,把那个Socket ID作为全局可以吗???谢谢!
有两个任务,一个接...
-
taskspawn 分配一个任务时,参数中有优先级,堆栈大小,我要怎么来写啊?刚刚搞这个东西。
taskspawn 分配一个任务时,参数中有优先级,堆栈...
-
谁会裸机运行pentium的cpu
谁会裸机运行pentium的cpu,能不能简单讲讲?
就是将cpu引导到保护模式后,进入到一段用户代码,这段代码是个...
-
如何根据字符数组去执行相应的函数或者查找到变量(急!)
现在需要在没有操作系统的powerPC上完成这样一个类似串口的输入输出功能。注...
-
关于vxworks TFFS文件系统搭建时 format 死机问题
我修改了tffsconfig.c systffs.c config.h 等文件,已经显示了 type size但是...
-
vxworks解压缩
请问各位大侠,vxworks的解压缩源代码怎么看不到啊?它是采用的通用deflate/inflate算法吗?
在命令行中defl...