Многократные последующие записи в sysfs вызывают некорректное поведение модуля. Как обойти?
Моя команда пишет программное обеспечение, взаимодействующее с модулем ядра Linux. Мы пишем в sysfs для управления модулем. Недавно мы столкнулись с проблемой, из-за которой модуль иногда работает не так, как ожидалось.
Один из моих коллег заметил, что если мы поставим sleep
между последующими записями в sysfs проблема не возникает. Это, вероятно, означает, что после первой записи модулю требуется некоторое время для выполнения дополнительной обработки, и наш код должен подождать, пока это будет сделано, прежде чем выполнять вторую запись.
Я действительно не хочу ставить случайный sleep
в коде. Однако у нас практически нет опыта работы с пространством ядра. Есть ли способ обнаружить, что модуль ядра занят выполнением дополнительной обработки? Отслеживать активность модуля? Особенно программным способом, который мы могли бы использовать вместо sleep
-на некотором предопределенном интервале?
К сожалению, мой NDA не позволяет мне вдаваться в подробности о том, с каким модулем и какими файлами sysfs мы взаимодействуем.