La función ioctl se usa principalmente para controlar dispositivos de E /S. Puede implementar el método común de espacio de usuario para intercambiar datos con el kernel. ¿Cuáles son las funciones de la función ioctl en Linux? La siguiente pequeña serie le presentará el uso específico de la función ioctl en Linux.
Linux kernel concepto
Linux es el más popular núcleo del sistema operativo del ordenador libre. Es un sistema operativo similar a Unix escrito en C y que cumple con el estándar POSIX. Linux fue desarrollado por primera vez por el hacker finlandés Linus Torvalds para tratar de proporcionar un sistema operativo tipo Unix gratuito y gratuito en la arquitectura Intel x86. El programa comenzó en 1991, con la ayuda de los piratas informáticos de Minix al principio del programa, y hoy en día, innumerables programadores de todo el mundo están ayudando al programa de forma gratuita. Técnicamente hablando, Linux es un núcleo. "Kernel" se refiere a un software de sistema que proporciona hardware de capa de abstracción, control de disco y sistema de archivos, multitarea y más. Un kernel no es un sistema operativo completo. Un sistema operativo completo basado en el kernel de Linux se llama sistema operativo de Linux, o GNU /Linux.
La función ioctl está en el controlador, porque no sé si hay otras ocasiones en las que se utiliza ioctl, por lo que se especifica el alcance de nuestra discusión. ¿Por qué quieres escribir un artículo? Es porque estaba confundido por ioctl hace un tiempo. Solo lo descubrí en unos días, así que limpié mi mente aquí.
Primero, que es ioctl.
ioctl es una función en el controlador de dispositivo que administra los canales de E /S del dispositivo. La llamada gestión de canales de E /S consiste en controlar algunas de las características del dispositivo, como la velocidad de transmisión del puerto serie, la velocidad del motor, etc. El número de llamadas es el siguiente:
int ioctl (int fd, ind cmd, …);
donde fd es el identificador de archivo que devuelve la función open cuando el programa de usuario abre el dispositivo, cmd Es el comando de control del programa de usuario al dispositivo. En cuanto a los siguientes puntos suspensivos, se trata de algunos parámetros complementarios, generalmente uno como máximo, con o sin el significado de cmd.
La función ioctl es un componente de propiedad en la estructura del archivo. Es decir, si su controlador proporciona soporte para ioctl, el usuario puede usar la función ioctl en el programa del usuario para controlar el canal de E /S del dispositivo.
En segundo lugar, la necesidad de ioctl
Si no necesita ioctl, también puede controlar el canal de E /S del dispositivo, pero está bastante limitado. Por ejemplo, podemos verificar si hay un flujo especial de datos contratados al implementar la escritura en el controlador, si existe, luego seguir el comando de control (generalmente se realiza en la programación de socket). Sin embargo, si lo hace, provocará una división de código desconocida, un programa confuso y el programador estará mareado.
Por lo tanto, usamos ioctl para implementar la función de control. Tenga en cuenta que lo que hace el programa de usuario es decirle al conductor qué quiere hacer con el código de comando. En cuanto a cómo interpretar estos comandos y cómo implementarlos, esto es lo que hace el controlador.
Tercero, cómo lograr ioctl
Este es un problema muy problemático, puedo salvar la provincia. Para dejarlo en claro, no se pueden decir cuatro o cinco mil palabras, por lo que no puedo dejarlo muy claro aquí, pero si los lectores están interesados en cómo el programa de usuario está relacionado con el controlador, puede verme antes. El "Misterio de la Escritura" escrito por el público. El lector simplemente reemplaza la escritura con ioctl y sabe cómo el programa ioctl del usuario está asociado con la implementación ioctl en el controlador.
Estoy aquí para decir una idea general, porque creo que el libro "Controladores de dispositivos Linux" ha sido muy claro, pero tomará algún tiempo mirarlo.
En el cuerpo de la función ioctl implementada en el controlador, en realidad hay una estructura de switch {caso}, cada caso corresponde a un código de comando, para realizar algunas operaciones correspondientes. Cómo lograr estas operaciones, este es el propio negocio del programador, porque el equipo es específico, no hay manera de decirlo. La clave es cómo organizar el código de comando, porque el código de comando en ioctl es la única manera de contactar a los comandos del programa de usuario y al soporte del controlador.
La organización del código de comando es algo exquisita, ya que debemos hacer una correspondencia uno a uno entre el comando y el dispositivo, para que el comando correcto no se envíe al dispositivo incorrecto, o el error será El comando se envía al dispositivo correcto o el comando incorrecto se envía al dispositivo incorrecto. Estos errores pueden llevar a cosas impredecibles, y cuando el programador encuentra estas cosas extrañas, es muy difícil depurar el programa para encontrar el error.
Entonces, en el kernel de Linux, defina un código de comando como este:
____________________________________
Los registros de Linux pueden ser creados por el usuario o creados automáticamente
VirtualBox es una máquina virtual, adecuada para sistemas Linux, pero VirtualBox ad
Después de instalar el sistema Linux con vps, descubrí que no hay suficientes parti
El comando dividir en el sistema Linux se usa principalmente para dividir archivos. A menudo se usa
Resumen de métodos para obtener ayuda de Linux
Cómo Linux implementa el control remoto de los comandos de shell
Comprensión profunda del flujo de texto de Linux
Cómo instalar el servidor vsftpd
Linux no puede eliminar completamente LibreOffice cómo resolver?
¿Cómo configurar Kde5 para el sistema Gentoo Linux?
¿Conoces las 7 tendencias principales en el espacio de escritorio de Linux?
Resumen del uso del comando hexdump en sistemas Linux
Búsqueda de tarjeta de red inalámbrica de Ubuntu no puede encontrar una solución
Linux prohíbe el arranque de MySQL desde el arranque 诀窍
Linux usa Tmux para mejorar la eficiencia de la operación del terminal
Cómo cortar el administrador de recursos del sistema Win8
Windows 7 nueva utilidad: registrador de comentarios problema
El análisis dice que los altos precios del hardware arruinarán a Google Chrome OS
Win10 y win7, que es mejor que Win10 y Win7. Evaluación de comparación
Win7 no puede ser un servicio cerrado
¿Qué pasa si la memoria del sistema win7 no es suficiente?
Resuelva los problemas que se encuentran a menudo en Windows XP SP2
Cómo resolver el problema de que la velocidad de la red disminuye al instalar el sistema Windows10