Модификация существующего модуля в ядре Linux
Я использую g_file_storage
как водитель на моем embedded linux
чтобы представить его как запоминающее устройство для любого USB-хоста. Я сделал это хорошо!
Теперь мне нужно сделать больше.... это захватить событие извлечения на USB-устройстве.. который является функциональностью, не предоставленной g_file_storage
до сих пор.
У меня есть это function fsg_suspend()
в g_file_storage driver
... Это процедура, которая вызывается, когда USB-хост Windows делает "Safely remove hardware"
.....
я думаю о добавлении простого printk для отправки простого сообщения в /var/log/message
в fsg_suspend
функция, которую я буду смотреть из пользовательского пространства на BeagleBoard
.....
но я в очень простых сомнениях в программировании ядра... если вы можете мне помочь....
я написал простые модули ядра.. что скажем module.c
подать я использую простую команду make, чтобы скомпилировать его тогда modprobe/insmod
чтобы вставить его, а затем я использую его......это о модуле, полностью написанном мной.
а также
я также настроил модуль в качестве опции M в файле конфигурации при перекомпиляции ядра.. затем я делаю make, делаю модули, make modules_install
, make_install
тогда мы используем modprobe
использовать эту особенность.. Пожалуйста, поправьте меня, если я ошибаюсь....
Но здесь этот модуль является модулем ядра, если я внесу в него изменения, то........
Могу ли я просто перекомпилировать его, используя его makefile... и сделать modprobe...? но этот Makefile, кажется, не поддерживает эту идею..
это будет мешать уже существующей копии этого модуля в работающем ядре? Или мне придется перекомпилировать ядро?
1 ответ
Я не понимаю большую часть первой половины запроса. Вопрос помечен Linux и ядром, так почему же так много о Windows?
Если я правильно понимаю, вам придется отключить существующий драйвер устройства. Самый простой способ - перестроить ядро без него. Затем используйте insmod
а также rmmod
Команды для загрузки и выгрузки нового драйвера.
Я не могу судить по предоставленным вами деталям, но, возможно, у нового драйвера есть способ сосуществовать со старым. Если ему не нужен IRQ или он может использовать отдельный, вы можете создавать новые узлы устройства и использовать его независимо от существующего драйвера.