GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie schreibe ich einen Userspace-Linux-Block-Gerätetreiber?

Betrachtet immer den ersten Fehler:

In Ihrem Fall sieht es nach einem Problem mit Include-Dateien aus, z. request_queue_t ist nicht definiert.

Da dies ein veralteter Typ ist, verwenden Sie wahrscheinlich eine Version von linux/blkdev.h, die neuer ist als das Codebeispiel.

Versuchen Sie, typedef struct request_queue request_queue_t; hinzuzufügen


Es gibt keine "offizielle" Möglichkeit, Blocktreiber im Userspace zu erstellen, aber die Leute tun dies oft, indem sie den NBD-Treiber (ab)verwenden, um über ein Loopback-Netzwerk mit einem Daemon zu sprechen, der auf einem normalen Socket lauscht und das NBD-Protokoll spricht. Weitere Informationen finden Sie in den NBD-Dokumenten.

Ihr Beispiel ist für ein Blockgerät im Kernelmodus, das als Kernelmodul erstellt werden muss. Und da sich die Interna des Kernels ständig ändern, ist er vermutlich jetzt inkompatibel.


Dem Vorschlag von MarkR folgend, ist es sogar möglich, das NBD-Protokoll über eine AF_UNIX zu sprechen Socket-Paar, sodass kein zusätzlicher lokaler Daemon benötigt wird. Das Programm, das dieses Protokoll implementiert, muss das Socket-Paar einrichten und ein Kind abspalten. Sowohl Elternteil als auch Kind schließen ein Ende des Buchsenpaars. Einer von ihnen nimmt Anfragen an seinem Ende des Sockets entgegen, während der andere den NBD-Treiber mit seinem Ende des Sockets verbindet.


Linux
  1. So schreiben Sie mit dem Linux-Befehl Text auf ein Bild

  2. Linux:So finden Sie den für ein Gerät verwendeten Gerätetreiber

  3. Linux – Wie testet man, ob ein Blockgerät von /sys oder /proc aus schreibgeschützt ist?

  4. Linux – Wie finde ich den Treiber (Modul), der mit einem Gerät unter Linux verbunden ist?

  5. So erstellen Sie ein virtuelles Blockgerät (Loop-Gerät/Dateisystem) in Linux

So verfolgen Sie Ihren Linux-Laptop

Lsblk-Befehl in Linux (Blockgeräte auflisten)

So blockieren Sie einen Port mit einer Firewall in Linux

Wie man ein C-Programm unter Linux schreibt und ausführt

Linux NBD-Tutorial:Jumpstart-Leitfaden für Netzwerkblockgeräte

Wie schreibe ich auf eine virtuelle Webcam unter Linux?