Когда вызывается функция зонда для драйвера ядра Linux? - PullRequest
13 голосов
/ 07 февраля 2012

Я пытаюсь обновить драйвер ядра для Android, я добавил несколько printk для его отладки, вызывается функция _init, а функция probe - нет. Чего мне не хватает? Когда и как вызывается функция зонда?

Код доступен по адресу: https://github.com/lamegopinto/kernel-2.6.32.27-M722HC/blob/master/drivers/power/rk2918_battery.c

Ответы [ 3 ]

8 голосов
/ 07 февраля 2012

Найден ответ после некоторого исследования. Для «платформенного» устройства функция зонда вызывается, когда платформенное устройство зарегистрировано, и его имя соответствует имени, указанному в драйвере устройства.

Подробнее здесь:http://comments.gmane.org/gmane.linux.kernel.kernelnewbies/37050

Теперь мне просто нужно выяснить, почему устройство не регистрируется: \

4 голосов
/ 17 апреля 2013

Когда вызывается module_init (insmod в случае динамической загрузки), тогда регистрация драйвера завершается, и присутствуют различные обратные вызовы, которые проверяют, возобновляют, приостанавливают, связанные с драйвером.

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

Зонд вызывается, когда имя устройства и идентификатор драйвера совпадают, т.е. проверяется, что они будут связаны / связаны.Так что теперь мы уверены, что, скажем, Driver ABC будет связан с Device ABC;также выполните настройки инициализации для устройства ABC в датчике драйвера ABC.

1 голос
/ 07 февраля 2012

Функция probe вызывается всякий раз, когда устройство видно.Это может произойти при загрузке устройства или при подключении устройства.Проверьте эту статью для получения дополнительной информации.

...