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.