Я работаю в драйвере USB ACM, «там, где мне нужно отправить уведомление из пространства ядра в приложение пользователя для вызова функции обратного вызова». Я не очень хорошо понимаю использование ядра для пользовательских интерфейсов в коде. как хорошо могут помочь sysfs для этого сценария. Пожалуйста, отправьте пример кода для использования sysfs, чтобы я получил идею реализовать в своем коде. Я не мог найти его нигде. Кроме того, PLS рассказать любой другой простой способ добиться ядро для пользовательского пространства уведомления. Заранее спасибо.Как отправить уведомление из ядра в приложение для пользовательского пространства с помощью SYSFS
ответ
Мое предложение было бы создать интерфейс sysfs для вашего драйвера ядра, к которому может обращаться пользовательское пространство. Каждый атрибут sysfs, если он создан с правильными свойствами, может быть прочитан как файл из пользовательского пространства. Затем вы можете использовать функцию опроса из пользовательского пространства для опроса для действия над этим файлом. Чтобы вызвать это действие из пространства ядра, вы можете использовать функцию sysfs_notify
для вашего атрибута, и это приведет к тому, что ваш код пользовательского пространства проснется. Вот как бы я это сделать
Kernel 1. Создать Kobject или прикрепить атрибут к предыдущему kobject 2. Если вы хотите, чтобы сигнал вызова sysfs_notify пользовательского пространства на kobject и приписывать
UserSpace
- Создать новую нить, которая будет блокировать во время ожидания sysfs_notify
- Откройте sysfs атрибут из этого потока
- опроса атрибут, как только sysfs_notif у из ядра называется он разблокирует ваш опрос
- называют обработки событий функции
Обратите внимание, что уведомление sysfs не может быть вызвано из контекста прерывания, поэтому, если ваше событие является прерыванием, вам необходимо создать какой-либо отложенной работы. Вы также можете использовать интерфейс sysfs_dirent, который позаботится о вашей отсроченной работе – whh4000
Вторым вопрос в «Связанном» списке: http://stackoverflow.com/questions/2689975/is-it-possible -в-называть-а-пользовательское пространство-обратный вызов функцию-из-пространства ядра-в-Linux. Это должно помочь вам сделать ваш вопрос более конкретным. – Tsyvarev