Подтвердить что ты не робот

Когда вызываются функции зонда для драйвера ядра Linux?

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

Ответ 3

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