Я создал экземпляр eventfd в пользовательской программе, используя eventfd(). Есть ли способ, которым я могу передать некоторую ссылку (указатель на ее структуру или пару pid + fd) на этот созданный экземпляр eventfd на модуль ядра, чтобы он мог обновить значение счетчика?
Вот что я хочу сделать: Я разрабатываю программу пользовательского пространства, которая должна обмениваться данными и сигналами с модулем пространства ядра, который я написал. Для передачи данных я уже использую ioctl. Но я хочу, чтобы модуль ядра мог сигнализировать программе пользовательского пространства всякий раз, когда новые данные готовы для использования в ioctl.
Для этого моя пользовательская программа создаст несколько eventfds в разных потоках. Эти потоки будут ждать эти eventfds, используя select(), и всякий раз, когда модуль ядра обновляет счетчики этих событий, они будут продолжать потреблять данные, запросив их через ioctl.
Проблема в том, как мне разрешить указатели "struct file *" на эти eventfds из kernelspace? Какую информацию вы можете получить в eventfds для модулей ядра, чтобы они могли получить указатели на eventfds? какие функции я бы использовал в модуле ядра для получения этих указателей?
Есть ли лучший способ передать события в пользовательское пространство из ядра? Я не могу отменить использование select().