Um Wireless-Treiber vom Userspace aus steuern zu können, werden einige IPC-Kommunikationsprozesse zwischen Kernel und Userspace verwendet.
- Zunächst wurde
ioctl
mit herstellerabhängigen APIs verwendet.
- Im Jahr 1996 erstellt Jean Tourrilhes wireless extensions (WE oder WEXT).
die Wireless Extension (WE) ist eine generische API ein Fahrer belichten die Benutzers Raumkonfiguration und Statistiken spezifisch für gemeinsamen Wireless LANs zu ermöglichen.
Im Jahr 2006 schafft John Linville mac80211 und Johannes Berg schafft cfg80211 und nl80211. Zusammen soll es drahtlose Erweiterungen ersetzen.
+-------------+
| |
| Userspace |
| |
+-------------+
^
- - - | - - - -
| nl80211
v
+-------------+
| |
| cfg80211 |
| |
+-------------+
+-------------+
| |
| mac80211 |
| driver |
| |
+-------------+
Ein wichtiger Punkt ist, dass nl80211/cfg80211/mac80211 nicht mehr ioctl verwenden, verwenden sie netlink.
So Tools wie iw, hostapd oder wpa_supplicant einige netlink Bibliotheken verwenden (wie libnl oder libnl-tiny) und die netlink öffentliche Schnittstelle Header, die nl80211.h natürlich ist.
Es gibt nicht so viele Dokumentationen, aber ich rate Ihnen, die libnl documentation und dann die iw source code (weil ich libnl verwenden) zu lesen.
Diese Frage ist off-topic. Siehe [help/on-topic] – sigjuice