我在运行ARM的嵌入式Linux上创建定时器时遇到了问题。我正在使用自制的C++库来管理定时器。尽管我可以访问源代码,但我并没有亲自编写它,也不太熟悉其实现细节...它能正常工作一段时间,然后出现“EAGAIN”错误。
使用strace时,我注意到当定时器不能工作时,定时器ID相对较高!
使用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