Die dritte Version der Patches für die Rust-Treiberunterstützung unter Linux ist bereits erschienen

Sechs Monate nach Veröffentlichung der zweiten Version, Miguel Ojeda, Autor des Rust-for-Linux-Projekts, machte den Vorschlag der dritten Option bekannt für die Entwicklung von Gerätetreibern in der Sprache Rust im Linux-Kernel.

Die Unterstützung von Rust gilt als experimentell, aber ihre Aufnahme in den linux-next-Zweig wurde bereits vereinbart. Die Entwicklung wird von Google und der Organisation ISRG (Internet Security Research Group) finanziert, die Gründer des Projekts Let's Encrypt ist und zur Förderung von HTTPS und der Entwicklung von Technologien zur Verbesserung der Internetsicherheit beiträgt.

Es sollte daran erinnert werden, dass die vorgeschlagenen Änderungen es ermöglichen, Rust als zweite Sprache zur Entwicklung von Kerneltreibern und -modulen zu verwenden.

Rust-Treiber unter Linux
Verwandte Artikel:
Die zweite Version der Patches für die Rust-Treiberunterstützung unter Linux wurde bereits ausgeliefert

Rust-Unterstützung wird als Option beworben, die standardmäßig nicht aktiv ist und es führt nicht dazu, dass Rust in die erforderlichen grundlegenden Build-Abhängigkeiten aufgenommen wird. Die Verwendung von Rust für die Treiberentwicklung ermöglicht es Ihnen, mit minimalem Aufwand bessere und sicherere Treiber zu erstellen, ohne mühsam auf einen freigegebenen Speicherbereich zugreifen, Nullzeiger dereferenzieren und Puffergrenzen überschreiten zu müssen.

Die neue Version der Patches entfernt weiterhin die Kommentare, die während der Diskussion über die erste und zweite Version der Patches gemacht wurden, und die bemerkenswertesten Änderungen, die wir finden können:

Auf die stabile Version von Rust 1.57 umgestellt als Referenz-Compiler und Bindung an die stabilisierte Ausgabe der Sprache Rust 2021. Der Übergang zur Spezifikation Rust 2021 perlaubt, mit der Arbeit zu beginnen, um die Verwendung solcher instabiler Funktionen zu vermeiden in Patches wie const_fn_transmute, const_panic, const_unreachable_unchecked und core_panic und try_reserve.

Es fällt auch auf, dass Die Entwicklung der Alloc-Version wurde fortgesetzt aus der Rust-Bibliothek, in der neuen Version, die Optionen "no_rc" und "no_sync" sind implementiert, um die Funktionalität zu deaktivieren die im Rust-Code für den Kernel nicht verwendet wird, wodurch die Bibliothek modularer wird. Wir arbeiten weiterhin mit den wichtigsten Alloc-Entwicklern zusammen, um die notwendigen Kernel-Änderungen in die Hauptbibliothek einzubringen. Die Option "no_fp_fmt_parse", die für die Funktion der Bibliothek auf Kernel-Ebene erforderlich ist, wurde in Rusts Basisbibliothek (Kernel) verschoben.

Code bereinigt, um mögliche Compiler-Warnungen zu entfernen beim Kompilieren des Kernels im Modus CONFIG_WERROR. Wenn Code in Rust erstellt wird, sind zusätzliche Diagnose-Compiler-Modi und Clippy-Linter-Warnungen enthalten.

Sie schlugen vor Abstraktionen zur Verwendung von Seqlocks (Sequenzsperren), Callback-Aufrufe für Energieverwaltung, Speicher-I/O (readX/writeX), Interrupt- und Thread-Handler, GPIO, Gerätezugriff, Treiber und Credentials im Rostcode.

Treiberentwicklungstools wurden erweitert mit der Verwendung von verschiebbaren Mutexes, Bit-Iteratoren, vereinfachten Bindungen über Zeiger, verbesserter Fehlerdiagnose und einer datenbusunabhängigen Infrastruktur.

Die Arbeit mit Links wurde mit dem Ref-Typ verbessert vereinfacht, basierend auf dem Backend refcount_t, das die gleichnamige zentrale API zum Zählen von Referenzen verwendet. Die Unterstützung für die Arc- und Rc-Typen, die in der Standard-Mapping-Bibliothek bereitgestellt werden, wurde entfernt und ist in Code, der auf Kernel-Ebene ausgeführt wird, nicht verfügbar (für die Bibliothek selbst wurden Optionen zum Deaktivieren dieser Typen vorbereitet).

Den Patches wurde eine in Rust neu geschriebene Version des PL061 GPIO-Treibers hinzugefügt. Ein Merkmal des Treibers besteht darin, dass seine Near-Line-by-Line-Implementierung den bestehenden C-GPIO-Treiber wiederholt. Für Entwickler, die sich mit dem Bauen von Controllern in Rust vertraut machen wollen, wurde ein zeilenweiser Vergleich erstellt, der einen Einblick gibt, zu welchen Builds in Rust der C-Code geworden ist.

Die Hauptcodebasis von Rust verwendet rustc_codegen_gcc, ein rustc-Backend für GCC, das die AOT-Kompilierung mithilfe der libgccjit-Bibliothek implementiert. Mit der richtigen Entwicklung des Backends können Sie den im Kernel enthaltenen Rust-Code mithilfe von GCC sammeln.
Neben ARM, Google und Microsoft hat Red Hat Interesse bekundet, Rust im Linux-Kernel einzusetzen.

Wenn Sie mehr darüber erfahren möchten, können Sie die Details einsehen im folgenden Link.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: AB Internet Networks 2008 SL
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.