如果在vxworks中将负数传递给taskDelay函数,会发生什么?

时间:2009-07-19 00:46:23

标签: vxworks

注意到taskDelay的参数是int类型,这意味着该数字可能是负数。只是想知道函数在传递负数时会如何反应。

4 个答案:

答案 0 :(得分:0)

大多数函数会验证输入,只返回早期/返回0 /将有问题的参数设置为默认值。

答案 1 :(得分:0)

我认为在制作中没有迫切需要这样做,你可能会有一些代码可以用来测试....为什么不试一试呢?

答案 2 :(得分:0)

文档没有解决它,它们定义的唯一错误代码不包括这种情况。因此,最正确的答案是结果未定义。

有关此gem的信息,请参阅VxWorks / Tornado II FAQ

  

taskDelay(-1)显示了另一个错误   vxWorks计时器/刻度代码。它有   设置vxTicks的(侧面)效果   为零。这破坏了当地时间   (可能还有其他的东西)。事实上   taskDelay(x)将具有相同的效果   如果vxTicks + x> = 0x100000000。如果   系统时钟频率为100Hz   大约500天后发生(因为   vxTicks包装)。以更快的时钟速率   它会更快地发生。有人在尝试   几年的正常运行时间?

     

哦,有一个没有证件的鞋面   限制时钟频率。按费率计算   4294以上select()将失败   将其'usec'时间转换为   正确的刻度数。 (来自:大卫   Laight,dsl @ tadpole.co.uk)

假设这个bug已经过时,我希望它会返回一个错误或者与taskDelay(0)做同样的事情,这会将你的任务放在就绪队列的末尾。

答案 3 :(得分:0)

taskDelay(10)的任务延迟时间将为虚拟10,9,..,1,0。

对于taskDelay(-10),任务延迟时间将为-10,-11,...,-2147483648,2147483647,...,1,0。