У меня проблемы с созданием таймера под моим встроенным Linux под управлением ARM. Я использую самодельную библиотеку C ++ для управления таймером. Я не кодировал его сам, я не очень хорошо знаю реализацию, несмотря на то, что у меня есть доступ к исходному коду ... Это работает некоторое время, а затем я получил ошибку "EAGAIN".
Используя strace, я заметил, что когда он не работает, ID таймера очень высокий!
timer_create(CLOCK_MONOTONIC, {0, SIGRT_3, SIGEV_SIGNAL, {...}}, 0xbed50af4) = -1 EAGAIN (Resource temporarily unavailable)
Смотрите довольно низкий идентификатор таймера, когда он работает:
timer_create(CLOCK_MONOTONIC, {0x3, SIGRT_3, SIGEV_SIGNAL, {...}}, {0x3d}) = 0
Я думал, что количество таймеров не ограничено! Вообще-то нет? Должны ли мы уничтожить таймер, как только мы покончим с этим? Я также использовал утилиту ядра «timer_stats», но это мне мало помогло ... Есть ли другая утилита отладки для таймеров внутри ядра или какой-либо другой инструмент?
Спасибо за вашу помощь!