2016-06-18 8 views
1

Ist es machbar, Socket von Kernel-Modul eines Char-Gerätetreibers in Linux zu öffnen? Ich versuche, den Ausgabe/Eingabe-Stream von Char-Geräten über das Netzwerk zu emulieren. Aber soweit ich gesucht habe, ist das Öffnen eines Sockels vom Char-Gerät nicht möglich? Gibt es noch eine andere Möglichkeit, von char-Gerätetreibern auf udp/tcp-Ports zuzugreifen?Socket-Kommunikation in Char Gerätetreiber

Antwort

0

Ja, Sie können Socket öffnen und mit Remote-Hosts im Kernel-Code kommunizieren, ein anschauliches Beispiel ist das Modul NFS, das sunrpc für seine Protokolle verwendet, und beide laufen im Kernel-Modul.

Betrachten Sie zunächst kernel_connect [1], um eine Verbindung zu starten, und kernel_sock_shutdown, um die Verbindung zu beenden. Es gibt eine vollständige Liste von Apis in socket.c.

[1] http://lxr.free-electrons.com/source/net/socket.c#L3212

[2] http://lxr.free-electrons.com/source/net/socket.c#L3298

[3] http://lxr.free-electrons.com/source/net/socket.c

+0

dank @fluter. – RedArrow