首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > VxWorks >

请教vxWorks中有哪些原因导致taskPrioritySet()设置失败呢

2012-12-26 
请问vxWorks中有哪些原因导致taskPrioritySet()设置失败呢?小弟最近在做那个哲学家吃饭的问题,其中想将其

请问vxWorks中有哪些原因导致taskPrioritySet()设置失败呢?
小弟最近在做那个哲学家吃饭的问题,其中想将其中的一个任务的优先级提高,但是用taskPrioritySet()函数对任务的优先级进行提升,但是一直都提示说对任务的优先级设置失败,请问有什么原因导致这种优先级设置失败呢?
[解决办法]
你看一下错误号,errno 。
[解决办法]
程序编译执行都没有报错,但是返回值一直都是ERROR,也就是设置程序的优先级不成功,所以一直很困惑,不知道是什么原因导致优先级设置不成功。
[解决办法]
下面任务的源代码,执行的时候输出的结果一直是Set task ph1 priority failed!
int record()
{
stMsg myMsg;
int i=100,j;
while(i--)
{
msgQReceive(msgQueID,(char *)&myMsg,sizeof(myMsg),WAIT_FOREVER);//等待消息的到来
if(MSG_PH == myMsg.msgType)
{
printf("ph%d eating!\t",myMsg.phID);
phWaitTime[myMsg.phID]=-1;//等待时间设置为-1,因为后面还要加1
}
else if(MSG_WD == myMsg.msgType)//接收到看门狗的消息
{
printf("\n");
for(j=0 ; j<5 ; j++)
{
phWaitTime[j]++;//等待时间加1
if(10 == phWaitTime[j])//判断哲学家j是否被饿死
{
printf("Philosopher %d died!\n",j);
return ERROR;
}
if(9 == phWaitTime[j])//将要饿死的哲学家的优先级提高
{
if(ERROR == taskPrioritySet(tID[j],HIGH_PRI));//判断是否设置失败
{
printf("Set task ph%d priority failed!\n",j);
return ERROR;
}
}
printf("ph%d waiting time:%d\n",j,phWaitTime[j]);//输出等待时间
}
printf("\n");
}
else
{
printf("Unexpected message!\n");
}
}
return OK;
}
[解决办法]
执行int errnoGet (void)函数获得错误号,看看错误号是否有有用的提示。


if(ERROR == taskPrioritySet(tID[j],HIGH_PRI));//判断是否设置失败
{
  printf("Set task ph%d priority failed, errno=0x%08x!\n",j, errnoGet());
  return ERROR;


[解决办法]
谢谢TTerrenceLan,
用了你的方法试了一下,其中的errnoGet()的返回值为0,表示没有错误。
[解决办法]
大家都是高手啊
我也得向你们学下

热点排行