我无法在运行ARM的嵌入式Linux下创建计时器。我正在使用自制的C++库来管理定时器。我自己没有编写代码,尽管我可以访问源代码,但我并不十分了解它的实现......它工作了一段时间,然后我得到了错误“EAGAIN”。timer_create():-1 EAGAIN(资源暂时不可用)
使用strace我注意到,当它不工作时,定时器ID很安静!
timer_create(CLOCK_MONOTONIC, {0, SIGRT_3, SIGEV_SIGNAL, {...}}, 0xbed50af4) = -1 EAGAIN (Resource temporarily unavailable)
看到相当低的定时器ID,当它的工作:
timer_create(CLOCK_MONOTONIC, {0x3, SIGRT_3, SIGEV_SIGNAL, {...}}, {0x3d}) = 0
我认为定时器的数量无限!其实并不是?一旦我们完成了它,我们应该摧毁计时器吗?我还使用了“timer_stats”内核实用程序,但是这对我没有多大帮助......是否有内核或任何其他工具中定时器的其他调试实用程序?
感谢您的帮助!
你不能简单地处理'EAGAIN'错误并重复创建你的计时器吗?或者在每次通话结束一段时间后,EAGAIN错误会消失? – rekire
我真的不太了解您的具体计时器问题,但是当您不再需要它时摧毁某些东西肯定似乎是一个好主意。 – ereOn
它总是使EAGAIN错误... – morandg