Как модуль ядра может взаимодействовать с процессом пользовательского пространства во время rmmod? - PullRequest
0 голосов
/ 10 февраля 2012

У меня есть модуль ядра (на самом деле драйвер псевдо-устройства), а также вспомогательный процесс в пространстве пользователя.

Я хочу, чтобы модуль ядра связывался с процессом пользовательского пространства во время процесса rmmod, запускал процесс пользовательского пространства для выполнения некоторой очистки.Я знаю, что могу послать сигнал из ядра пользовательскому процессу, чтобы инициировать очистку, но мне нужно отправить некоторую другую информацию, чтобы направить пользовательский процесс, как выполнить очистку.(Это массив целых чисел, если это имеет значение).Я предполагаю, что не могу передать какую-либо информацию вместе с сигналом?

Ребята, вы знаете, как это сделать?Я не могу использовать ioctl, так как устройство не будет видимо процессу пользовательского пространства, так как оно rmmod'ed ..

Спасибо.

1 Ответ

2 голосов
/ 10 февраля 2012

Такой дизайн не очень хорошо согласуется с тем, как работает ядро.

Вместо этого вы должны заставить сам модуль сообщать о том, что он используется, пока очистка не будет завершена (поэтому может произойти сбой rmmod),Если вы хотите выгрузить модуль, вы должны запустить очистку пользовательского пространства, а затем выполнить rmmod после его завершения (предположительно, с помощью некоторого сценария пользовательского пространства).

Вы можете реализовать это, имеяДемон userspace хранит файловый дескриптор, открытый для устройства, предоставленного модулем ядра, и закрывает его после очистки пользовательского пространства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...