我们如何找出VxWorks中发生优先级继承的原因?

时间:2009-10-08 07:39:19

标签: vxworks

我们有一个任务是状态就绪+我。我们能找到等待释放所有信号量的任务吗?这是6.0之前的vxworks

4 个答案:

答案 0 :(得分:1)

如果你可以从任务中获得回溯,你应该看到它在某种系统实体上被阻止,例如信号量。您可以查看backtrace中打印的arg列表,然后使用C shell中的semShow获取有关该信号量的信息。其他系统同步实体提供类似的* Show例程。

假设实体支持“所有者”的概念,semShow应显示所有者的TID。

答案 1 :(得分:1)

在较旧的基于Tornado的系统下,WindView工具可让您随时查看任务之间的关系。 WindView可以显示所有任务状态转换,中断,信号量操作等。

对于较新的基于Workbench的系统,同一工具现在称为System Viewer。

WindView / System Viewer是一种豪华的方式,用于调查您在任务状态中遇到的任何问题以及他们如何采用这种方式。

答案 2 :(得分:0)

如果我理解了您的问题,那么您的任务是继承其他任务的优先级,并且您无法识别其他任务。我不记得i WindSh命令是否打印了继承的优先级,但是如果这样做可能会给你一个关于你应该看哪些任务的线索。一旦你将其缩小到几个任务,你应该能够使用tw命令打印关于任务所在的对象的信息。

另一方面,您为什么关注优先级继承?在所有优先级继承都不成问题之后,它就是优先级倒置的解决方案。

答案 3 :(得分:0)

如果您的任务是READY + I,我认为它不再等待信号量了。它正在等待访问CPU。您必须运行更高优先级的任务才能阻止READY + I任务运行。