2012-02-06 11 views
13

Estoy tratando de actualizar un controlador de kernel para Android, he agregado algunos printk para depurarlo, se invoca la función _init, pero la función de sondeo no. ¿Qué me falta? ¿Cuándo/cómo se invoca la función de la sonda?¿Cuándo se llama la función de sonda para un controlador de kernel de Linux?

El código está disponible en: https://github.com/lamegopinto/kernel-2.6.32.27-M722HC/blob/master/drivers/power/rk2918_battery.c

+1

¿Puedes mostrar el código? – sarnold

Respuesta

8

Encontré la respuesta después de algunas investigaciones, para un dispositivo de "plataforma" se invoca la función de sonda cuando se registra un dispositivo de plataforma y su nombre de dispositivo coincide con el nombre especificado en el controlador del dispositivo.

Más detalles aquí: http://comments.gmane.org/gmane.linux.kernel.kernelnewbies/37050

Ahora sólo tiene que averiguar por qué el dispositivo no está siendo registrado: \

+0

El registro del controlador es una tarea inicial, solo después de que se pueda invocar la sonda de registro. – shingaridavesh

+0

bien, esperaba una respuesta más descriptiva, pero +1 para el enlace. – aditya

1

La función probe se llama cada vez que se ve el dispositivo. Esto puede ocurrir en el inicio del dispositivo, o puede ocurrir cuando el dispositivo está conectado. Check out this article for more info.

4

Cuando un module_init se llama (insmod en caso de carga dinámica), entonces el registro del controlador está hecho, y las varias devoluciones de llamada sondean, reanudan, suspenden relacionadas con el controlador están presentes.

Ahora, lo principal para entender esto es lo que sucede en la función de sondeo. Si observa que en la sonda la mayoría de las inicializaciones relacionadas con el dispositivo están hechas (por ejemplo, configuraciones asociadas con el DISPOSITIVO), obviamente esto debería ejecutarse cuando el dispositivo esté presente.

La sonda se invoca cuando el dispositivo y el nombre/id del controlador coinciden, es decir, se verifica que estos se acoplarán o vincularán. Así que ahora estamos seguros de que el controlador ABC se asociará con el dispositivo ABC; también lo hacen las configuraciones de inicialización para el Dispositivo ABC en la sonda del Controlador ABC.

Cuestiones relacionadas