2016-04-11 4 views
0

У меня есть драйвер Linux, который может использовать драйвер, который существует в ядре, но только после того, как я его вручную вставляю. В принципе, я вставляю свой драйвер, а затем вставляю ядро ​​(его компилируется как модуль, а не встроенный), и они могут подключаться друг к другу.Модуль загрузки ядра Linux

Для вызова другого драйвера я использую platform_device_alloc («имя-драйвера», 0), затем я выделяю ресурсы для драйвера, используя то же имя и требуемое для него пространство памяти, и, наконец, Я использую platform_device_add. С этим я могу подключиться к драйверу и запустить функцию зонда со всем, что мне нужно.

Что я хочу, так это просто вставить мой модуль и что он признает, что другой существует в системе и подключается к нему без необходимости его вручную вставлять.

Спасибо за вашу помощь и извините за любые ошибки на английском языке.

С наилучшими пожеланиями

+1

Если ваш драйвер использует символ, экспортированный другим драйвером, ваш драйвер будет зависеть от другого драйвера. Если ваш драйвер был установлен в каталоге модулей ядра, и вы запустили 'depmod -a' после его установки, вы можете запустить' modprobe your_driver' (где «your_driver» - это имя вашего модуля драйвера, без «.ko "), и он автоматически загрузит другой драйвер в качестве зависимости. –

+0

У другого драйвера нет экспортных символов, к сожалению. Я связываю свой драйвер с каталогом ядра, я запускаю depmod -a и вставляю его. если я modprobe другой драйвер после, я могу соединить их обоих, но я не могу заставить его назвать это без необходимости modprobe. –

+0

Не могли бы вы изменить вопрос, чтобы дать более подробную информацию о том, как ваш драйвер использует другой драйвер? –

ответ

0

правильный способ сделать это, чтобы использовать функцию, которая имеет экспортированной символ, так же, как сказал @ian Abbott. Если у вас нет экспортированных функций, как я, создание патча для драйвера может быть самым простым способом сделать это!

Смежные вопросы