Linux-Kernel: Linux bekommt Systemaufruf für Windows-Spiele

Der Code für den neuen Linux-Systemaufruf User Dispatch ist in den Tip-Zweig des Linux-Kernel aufgenommen(öffnet im neuen Fenster) worden. Damit ist davon auszugehen, dass die Patches im Linux-Kernel 5.11 eingepflegt werden, der vermutlich Ende Februar erscheint. Der User-Dispatch-Systemaufruf dient vor allem der besseren Unterstützung von Windows-Spielen über Kompatibilitätsschichten wie Wine oder das darauf aufbauende Proton, das Valve in seiner Spieleplattform Steam benutzt.
Die Dokumentation zum Patch(öffnet im neuen Fenster) führt die Notwendigkeit der neuen Funktion detailliert aus. Demnach müssen die genannten Projekte natürlich die Windows-Systemaufrufe emulieren, aber auch selbst native Systemaufrufe ausführen. Wie der zuständige Entwickler Gabriel Krisman Bertazi zur ersten Version der Patches schreibt(öffnet im neuen Fenster) , ist diese Unterscheidung nicht mehr so einfach, weil moderne Windows-Anwendungen nicht mehr die WinAPI verwenden, sondern Systemaufrufe direkt selbst nutzen.
Für die notwendige Filterung sind übliche Mechanismen wie Seccomp aber laut den Beteiligten nicht gut geeignet, weil sie zu rund zehn Prozent Leistungsverlust führen. Bei der nun erstellten neuen Methode ist der Verlust mit rund 1,5 Prozent deutlich geringer.
Wie der Name User Dispatch andeutet, soll das Filtern der Systemaufrufe zurück an den Userspace übergeben und nicht mehr im Kernel durchgeführt werden müssen. Die erfolgreich erkannten Systemaufrufe lassen sich schnell zurück in den Userspace umleiten und dort von Anwendungen wie Wine emulieren. Da die Windows-Systemaufrufe die ABI-Konventionen von Linux nicht nutzen, wird die Filterung mit Hilfe der Speicherbereiche umgesetzt. Weitere Details liefert die Dokumentation.