Есть ли способ удалить загруженный модуль из функции зонда в драйвере устройства Linux?

Мое требование состоит в том, чтобы выгрузить/удалить загруженный модуль из его собственной функции зонда.

Является ли это возможным? Если да, то, пожалуйста, помогите мне в этом.

Например, у меня есть модуль ядра с именем ncr-power, и во время загрузки он загружается системой, и вызывается функция probe. Я не хочу загружать его в определенной ситуации, но загрузка не моя рука, поэтому, если я смогу удалить его после загрузки.

Спасибо за ваше время..


person Raxesh Oriya    schedule 23.07.2019    source источник
comment
Я думаю об одном способе, если probe() не вызывается на основе свойства дерева устройств, и этот узел дерева устройств является механизмом наложения дерева устройств. Просто мысль.   -  person a.saurabh    schedule 11.09.2019
comment
См. stackoverflow.com/questions/32413204/   -  person sawdust    schedule 09.10.2020


Ответы (1)


Есть способ загрузить модуль из ядра, linux/kmod.h

int request_module(const char *module_name);

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

Я бы сделал это так: 1. В вашей функции probe, если вы хотите, чтобы модуль выгружался, установите переменную в драйвере. 2. Из сценария или программы, которую вы запускаете при запуске, в пространстве пользователя вызовите ioctl, который возвращает состояние выгрузки/не выгрузки. 3. Выгрузите драйвер из пользовательского режима, если указано.

person sander    schedule 31.07.2019