寻求:taskSpawn( )函数 和semBCreate()函数详解解决方案
发布时间:2010-06-14 16:35:19 文章来源:www.iduyao.cn 采编人员:星星草
寻求:taskSpawn( )函数 和semBCreate()函数详解
帮帮忙,哪位能告诉我这两个函数的作用,和其中各个参数的含义与作用。
我看了好久都不是很懂,谢谢大家了
------解决方案--------------------
int taskSpawn
(
char *name, /*任务名*/
int priority, /*任务优先级,vxWorks好像共255个,而且调度采用优先级抢占式,同优先级轮换式的调度方式*/
int options, /*任务的一些特性,例如VX_SUPERVISOR_MODE 0x0001 OBSOLETE: tasks always in sup mode*/
int stackSize, /* 需要申请堆栈的大小*/
FUNCPTR entryPt, /*任务处理函数*/
int arg1, /*任务处理函数需要的参数*/
int arg2,
int arg3,
int arg4,
int arg5,
int arg6,
int arg7,
int arg8,
int arg9,
int arg10
)
------解决方案--------------------
SEM_ID semBCreate
(
int options, /*信号量的特性,例如信号量的阻塞队列类型为优先级优先行还是FIFO*/
SEM_B_STATE initialState /* 信号量的初始状态:empty or full,用来同步或者资源互斥*/
)
返回的值就是改信号量的ID,实际上就是指向信号量的指针啦
------解决方案--------------------
taskSpawn:创建并激活任务,有点类似于VC下的启动线程函数:
int taskSpawn
(
char *name, /*你要创建的任务名:比如说task1,在Shell下可以用命令:i 来查看当前系统中所有的任务*/
int priority, /*任务优先级,*/
int options, /*一般为0*/
int stackSize, /* 需要申请堆栈的大小*/
FUNCPTR entryPt, /*回调函数,*/
int arg1, /*传递给处理任务回调函数所需要的参数*/
int arg2,
int arg3,
int arg4,
int arg5,
int arg6,
int arg7,
int arg8,
int arg9,
int arg10
)
用法:
taskSpawn("CANR1", 230, 0, 1024*32, (FUNCPTR)RecvProc,cardNo,1,0,0,0,0,0,0,0,0);
/************************************************************************/
/* CAN板卡接收数据任务 */
/* 参数: cardNo - CAN板卡序号,0表示第一块板卡,1表示第二块板卡 */
/* portNo - 端口号,0表示第一端口,1表示第二端口 */
/************************************************************************/
void RecvProc(int cardNo, int portNo)
{
CANMSG rece_msg;
int ret = 0;
int i = 0;
memset(&rece_msg, 0, sizeof(CANMSG));
printf("Recv CAN(%d) task ok.\n",cardNo);
/* 置CAN控制器为正常工作模式*/
if(cardNo==0)
{
canNormalRun(portNo);
}
else
{
canNormalRun2(portNo);
}
while(1)
{
/************************************************************************/
/* 接收数据 */
/************************************************************************/
if(cardNo==0)
{
ret = canReceiveMsg(portNo,&rece_msg);
}
else
{
ret = canReceiveMsg2(portNo,&rece_msg);
}
if(ret==1)
{
/* success */
printf("Receive Data: ");
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
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...