ioctlneigt dazu, mit einem /devEintrag Hand in Hand zu gehen ; Ihr typischer Code würde reichen
fd=open("/dev/mydevice",O_RDRW);
ioctl(fd,.....);
Dies ist das Standard-Unix-Verhalten. Innerhalb des Kerneltreibers können Sie Zugriffskontrollen einfügen (z. B. nur rooteinige Dinge tun oder eine bestimmte Funktion für einen feinkörnigeren Zugriff erfordern), was ihn ziemlich flexibel und leistungsstark macht.
Dies bedeutet natürlich, dass Geräte viel mehr als nur Block- / Zeichen-Lese- / Schreibaktivitäten verwenden können. Viele Dinge können über ioctlAnrufe erledigt werden . Gar nicht so einfach zu verwenden , um von Shell - Skripten, aber ziemlich einfach aus Coder perloder pythonoder ähnlichem.
sysfsEinträge sind eine weitere Möglichkeit, mit Treibern zu interagieren. Normalerweise hat jeder Befehlstyp einen anderen Eintrag, so dass das Schreiben des Treibers kompliziert sein kann, der Zugriff über den Benutzerbereich jedoch sehr einfach ist. Einfache Shell-Skripte können viele Dinge manipulieren, sind aber möglicherweise nicht sehr effizient
netlinkkonzentriert sich hauptsächlich (glaube ich!) auf Netzwerkdatenübertragungen, könnte aber auch für andere Zwecke verwendet werden. Es ist wirklich gut für größere Datenübertragungsmengen und soll ioctlin einigen Fällen ein Nachfolger sein .
Alle Optionen sind gut; Ihr Anwendungsfall kann besser bestimmen, welche Art von Schnittstelle von Ihrem Treiber verfügbar gemacht werden soll.