GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo escribir un controlador de dispositivo de bloque de Linux de espacio de usuario?

Siempre mira el primer error:

En su caso, parece un problema con los archivos de inclusión, p. request_queue_t no está definido.

Dado que este es un tipo obsoleto, probablemente esté usando una versión de linux/blkdev.h que es más nueva que el ejemplo de código.

Intenta agregar typedef struct request_queue request_queue_t;


No existe una forma "oficial" de bloquear controladores en el espacio de usuario, sin embargo, las personas a menudo lo hacen (abusando) del controlador NBD para hablar a través de una red de bucle invertido con un demonio que escucha en un enchufe normal y habla el protocolo NBD. Consulte los documentos NBD para obtener más información.

Su ejemplo es para un dispositivo de bloque en modo kernel, que deberá construirse como un módulo kernel. Y como las partes internas del núcleo siempre están cambiando, presumiblemente ahora es incompatible.


Siguiendo la sugerencia de MarkR, incluso es posible hablar el protocolo NBD sobre un AF_UNIX par de sockets, por lo que no se necesita ningún demonio local adicional. El programa que implemente este protocolo deberá configurar el par de sockets y bifurcar un hijo. Tanto el padre como el hijo cierran un extremo del par de enchufes. Uno de ellos comienza a recibir solicitudes en su extremo del zócalo mientras que el otro conecta el controlador NBD a su extremo del zócalo.


Linux
  1. Cómo escribir texto en la imagen usando el comando de Linux

  2. Linux:¿cómo probar si un dispositivo de bloque es de solo lectura desde/sys o/proc?

  3. Linux:¿cómo encontrar el controlador (módulo) asociado con un dispositivo en Linux?

  4. Linux:¿cómo volver a conectar un dispositivo USB desconectado lógicamente?

  5. ¿Cómo encontrar el controlador (módulo) asociado con un dispositivo en Linux?

Cómo rastrear su computadora portátil Linux

Comando Lsblk en Linux (Lista de dispositivos de bloque)

Cómo bloquear un puerto usando un firewall en Linux

Cómo escribir y ejecutar un programa C en Linux

Tutorial de Linux NBD:Guía de inicio de dispositivo de bloque de red

¿Cómo escribir en una cámara web virtual en Linux?