modelo de dispositivo Linux, basta con ver la introducción teórica, como LDD3 Capítulo XIV, el resumen se sentirá difícil de entender, fácil de entender y más concretamente mediante la lectura de código del núcleo, por lo que la combinación de la teoría introducción y código del núcleo se pueden leer con mayor rapidez entender y comprender el modelo de dispositivo Linux. El propósito de este artículo es que en esta secuencia, antes de mirar a estos artículos es mejor leer atentamente el capítulo XIV LDD3. La mayor parte de dispositivo y el conductor están incluidos en un autobús, en particular, platform_device y platform_driver es el caso, contenida en platform_bus_type en. Platform_bus_type aquí para llamar a la línea principal, el análisis de la orden platform_driver proceso de registro para comprender modelo de dispositivo Linux. platform_bus_type asociado SOC para el controlador de dispositivo plataforma y la plataforma, tal como el núcleo de Linux-2.6.29 S3C2410 en todo el dispositivo de plataforma se guardan en la devs.c. Aquí es analizar platform_driver_register () llama al procedimiento de rutina al ejemplo S3C2410 controlador RTC RTC-s3c.c. En el último artículo de este ejemplo, fijado con una imagen del modelo de dispositivo, este artículo puede ser leído en el momento como referencia. Antes de leer este artículo, lo mejor es leer el artículo "Sobre los papeles de dispositivos modelo de dispositivo Linux."
a, S3C2410 RTC platform_driver definido en drivers /RTC código /RTC-s3c.c es el siguiente: static struct s3c2410_rtc_driver platform_driver = {, la sonda = s3c_rtc_probe, (quitar = __devexit_p (s3c_rtc_remove, suspender = .. .. s3c_rtc_suspend, reanudar = s3c_rtc_resume} = conductor, ". name = " S3C2410-RTC, propietario = THIS_MODULE, {; .. {Desde el nombre = " S3C2410-RTC ", los análisis posteriores que se convertirá en una el nombre del directorio, que está detrás de la /sys/bus/platform/s3c2410-rtc.s3c_rtc_probe llamadas ha analizado el uso platform_driver_register () se mencionará antes del hecho, "el modelo de dispositivo capítulos equipos Linux" () Register s3c2410_rtc_driver, analizarla dos aquí, platform_driver_register () de rutina se define en la base /código drivers /platform.c es como sigue :. int platform_driver_register (struct platform_driver * drv)} DRV- > driver.bus = &platform_bus_type; //establecer platform_bus_typeif (DRV- > sonda) DRV- > driver.probe = platform_drv_probe; //device_driver el vertedero si (DRV- y gt; quitar) DRV- > driver.remove = platform_drv_remove; si (DRV- > apagado) DRV- > driver.shutdown = platform_drv_shutdown; si (DRV- > suspender) DRV- > driver.suspend = platform_drv_suspend; si (DRV- > reanudar) DRV- > driver.resume = platform_drv_resume; driver_register retorno (&DRV- > conductor); //esta rutina para registrar device_driver Bus, {código más tarde análisis, 1. establecer platform_bus_type esto es muy importante porque el controlador y el dispositivo están unidos entre sí por un bus, específicamente en este caso está por platform_bus_type registrado rutina de devolución de llamada y las propiedades que deben alcanzarse, análisis del artículo equipo "modelo de dispositivo Linux en "que se menciona en el controlador coincida con el dispositivo vuelve a la rutina de registro de Mach por platform_bus_type () para completar. Análisis de platform_bus_type por favor refiérase a "Linux análisis de modelo de dispositivo de los papeles de dispositivos." Aquí es driver_register análisis (). Tres, driver_register () de rutina se define en la base /código drivers /driver.c es como sigue: int driver_register (struct device_driver * drv)} int ret; struct device_driver * otra; //hacer determina si ((DRV- > BUS > sonda &&DRV- > sonda) | | (DRV- > bus- > & eliminan; &DRV- > quitar) | | (DRV- > bus- > apagado &&DRV- > apagado)) printk (KERN_WARNING " controlador '% s' necesita una reforma - por favor utilice " " tipoDeBus métodos \\ n ", DRV- > nombre); /* encontrar por el nombre del controlador de conductor, si lo encuentra, lo que indica ya registrado, devolverá un código de error seguido de análisis * /other = driver_find (DRV- > nombre, DRV- > bus), si (otro ) {put_driver (otra); printk (KERN_ERR " Error: Driver '% s' ya está registrado, " " abortar ... \\ n ", DRV- > nombre); regreso -EEXIST; {/* la conductor se añade al bus de la KSET, y genera estas carpetas y el archivo de enlace, más tarde los análisis * /ret = bus_add_driver (drv), si (RET) ret retorno; /* Añadir attribute_group, no previsto DRV- > presente realización; Grupos * /ret = driver_add_groups (DRV, DRV- > grupos), si (r) bus_remove_driver (DRV); retorno RET;. {código, como uno de los comentarios en inglés dicha rutina, la mayoría del trabajo en bus_add_driver () la rutina se ha completado. bus_add_driver () rutina es similar a la función del analizado "en el dispositivo Linux artículos de equipamiento modelo" bus_add_device (), excepto que este último añadir un dispositivo para coger el autobús. El análisis siguiente driver_find () de rutina. Dos, driver_find () de rutina para encontrar el controlador por la conducción pertenece el contenedor de autobuses, que se define en la rutina de los conductores /base drivers_kset /Código driver.c es como sigue: struct device_driver * driver_find (const char * nombre, estructura tipoDeBus * autobús) } struct kobject * k = kset_find_obj (bus- > p- > drivers_kset, nombre); //Encuentra la struct driver_private * recipiente priv drivers_kset; si (k) {priv = to_driver (k); volver priv- > conductor; //devuelve al conductor a encontrar el {return null; {código de 1 a kset_find_obj (BUS > p > drivers_kset, nombre). kobj localizar el controlador, los códigos son los siguientes, struct kobject * kset_find_obj (struct KSET * KSET, char const nombre *)} struct kobject * k; struct kobject * ret = NULL; spin_lock (& kset- > list_lock); list_for_each_entry (k, &kset- > lista, entrada) {//iterate kset- > lista lista obtención kobj
lftp es un cliente ftp en Linux para iniciar sesión en un servidor FTP remoto. Use su comando espejo
Aquí hablaré sobre cómo usar el comando en Linux para probar la entrada de lectura y escritura del d
La actitud de Bill · Gates hacia el software es: Si quieres un buen software, debes pagarlo.
compilación e instalación manual 1, descargue el paquete de instalación, wget https://ohse.de/uwe/
Cómo determinar si Linux se está ejecutando en una máquina virtual
Comandos comunes de Linux detallados
bajo Linux tar, gz, bz2 y otra extracción Uso de archivo
Consejo: Generar contraseña de cifrado criptográfico bajo Linux
Cómo montar la carpeta debajo de windows a linux al configurar el entorno de desarrollo
Acerca de la aplicación del sistema Linux en el equipo DVR
La revolución educativa de Linux en Taiwan
Sistema Linux para actualizar la placa base BIOS
Proceso de inicio de arm + linux en el kernel
19 pensamientos entienden claramente el equilibrio de carga en Linux
El archivo de registro de Squid es demasiado grande, ¿cómo lidiar con él?
Sistema Windows8 para abrir el cuadro de diálogo de confirmación de eliminación (tutorial gráfico)
Ejemplo de desarrollo de software de Windows7: UAC, versión del sistema, permisos
Herramienta de escaneo de disco chino Windows XP /2003
software de gestión de proyectos Redmine + Rubí + pasajero + Nginx instalación
¿Cómo instalar Office2016 en el sistema Win10? Win10 instalar Office2016 tutorial
Cómo verificar la configuración de la computadora del sistema win7
Cómo agregar manualmente la red inalámbrica a Win10 para usar la red inalámbrica en línea
Cómo compartir el conocimiento funcional de múltiples monitores de Win8