eBPF: Kernel-VM soll Eingabegeräte in Linux verbessern
Die eBPF-Technik ermöglicht tiefe Einsichten in Linux-Kernel-Funktionen. Nun soll eBPF den Support für Eingabegeräte wie das Surface Dial verbessern.
Der Hauptbetreuer des Linux-Kernel-Subsystems für Eingabegeräte (HID), Jiří Kosina, hat die Unterstützung für eBPF in den HID-Entwicklungszweig aufgenommen. Der Code dürfte dementsprechend mit Linux 6.2, wahrscheinlich im Februar 2023, erscheinen.
Der Code stammt von HID-Co-Betreuer Benjamin Tissoires und soll die Unterstützung neuartiger Eingabegeräte oder auch einfache Fehlerbehebungen deutlich vereinfachen. Details dazu stellte der Entwickler auf der diesjährigen Linux Plumbers Conf vor.
In der Dokumentation der zuletzt eingereichten und nun eingepflegten Patches heißt es, dass einige Eingabegeräte spezifische Optimierungen bräuchten. Bisher sei dies über Kernel-Treiber umgesetzt worden. "Die Verwendung der eBPF-Fähigkeiten beschleunigt stattdessen die Entwicklung und fügt den bestehenden HID-Schnittstellen neue Fähigkeiten hinzu", heißt es weiter.
Bei eBPF handelt es sich um eine mittlerweile fast universell einsetzbare virtuelle Maschine (VM) im Linux-Kernel, die aus dem Berkeley Packet Filter (BPF) hervorging. Meist wird sie für Tracing-Funktionen und tiefe Einblicke in den Kernel selbst genutzt. Inzwischen wird dies auch für Windows umgesetzt. Die Nutzung von eBPF ermöglicht dabei aber im Grunde das Ausführen kleinerer Programme im Linux-Kernel.
Bessere Unterstützung dank eBPF
Genau das nutzt Tissoires nun aus. So lassen sich neue APIs aus dem Userspace in den Kernel laden, etwa für "tote Zonen" an Joysticks. Auch könnte dies genutzt werden, um neue Funktionen zum Kernel hinzuzufügen, die eigentlich eine komplett neue Kernel-API benötigten. Ebenso reiche für minimale Fehlerbehebungen auch nur ein eBPF-Programm, das theoretisch schneller verteilt werden könnte, als einzelne Patches immer wieder in ein Kernel-Release einzupflegen.
Letztlich, so schreibt Tissoires in der Dokumentation, könnten dank eBPF bestehende Geräte auf Seiten des Kernels in andere umgewandelt werden. Bisher seien diese Zuweisungen sehr statisch. Eine Maus bleibt also immer eine Maus. Die Patches erlaubten aber eine dynamische Transformation, je nach Einsatzzweck.
Tissoires nennt als Beispiel das Surface Dial von Microsoft. Dieses lässt sich zwar auch dank Tissoires prinzipiell seit Jahren in Linux nutzen. Die bisherige statische Zuweisung sei jedoch unbrauchbar, um das Gerät wie vorgesehen verwenden zu können. Künftig könnte das Gerät aber wie eine Maus fungieren und das Drehen wie ein Mausrad interpretiert werden, gleichzeitig könnte das haptische Feedback je nach Kontext zur Laufzeit umgesetzt werden. Dafür steht bereits Beispielcode bereit, der dies mit eBPF realisiert.