Die achte Version der Patches zur Unterstützung von Rust-Treibern unter Linux kommt

Miguel Ojeda, Autor des Rust-for-Linux-Projekts veröffentlichte die achte Ausgabe der Entwicklung von Linux-Kernel-Patches mit Rust-Sprachunterstützung für Linux-Kernel-Entwickler zu berücksichtigen.

Dies ist die neunte Veröffentlichung der Patches (unter Berücksichtigung der ersten veröffentlichten Version ohne Versionsnummer).. Rostunterstützung gilt als experimentell, aber es ist bereits im linux-next-Zweig enthalten, beansprucht die Integration in die Herbstversion von 5.20/6.0 und ist fortgeschritten genug, um mit der Arbeit an der Erstellung von Abstraktionsschichten auf den Kernel-Subsystemen sowie dem Schreiben von Controllern und Modulen zu beginnen.

Die Entwicklung wird von Google und der ISRG finanziert (Internet Security Research Group), die Gründer des Let's Encrypt-Projekts ist und HTTPS und die Entwicklung von Technologien zur Erhöhung der Internetsicherheit vorantreibt.

Die vorgeschlagenen Änderungen ermöglichen es, Rust als Zweitsprache für die Entwicklung von Treibern und Kernelmodulen zu verwenden. Die Rust-Unterstützung wird als Option präsentiert, die standardmäßig nicht aktiviert ist und nicht dazu führt, dass Rust in die erforderlichen Build-Abhängigkeiten für den Kernel aufgenommen wird. Die Verwendung von Rust zur Entwicklung von Treibern ermöglicht es Ihnen, mit minimalem Aufwand bessere und sicherere Treiber zu erstellen, ohne Probleme wie den Zugriff auf einen Speicherbereich nach der Freigabe, Dereferenzieren von Nullzeigern und Pufferüberläufe.

Die Speichersicherheit wird in Rust zur Kompilierzeit durch Überprüfung von Referenzen, Nachverfolgung des Objektbesitzes und der Objektlebensdauer (Scope) sowie durch Bewertung der Korrektheit des Speicherzugriffs während der Ausführung des Codes gewährleistet.

Was ist neu in dieser achten Version?

In diesem neuen Vorschlag, der veröffentlicht wurde, wird dies erwähnt die Alloc-Bibliotheksvariante, wodurch die mögliche Erzeugung eines „Panik“-Zustands bei Fehlern eliminiert wurde, aktualisiert auf Rust-Version 1.62. Im Vergleich zur Vorgängerversion hat das Rust-Toolkit die Unterstützung für die in Kernel-Patches verwendete const_fn_trait_bound-Funktionalität stabilisiert.

Daneben Der Bindungscode ist in ein Bündel von „Bindungs“-Kästchen unterteilt separat, was es einfach macht, neu zu erstellen, wenn nur das Kernel-Hauptpaket geändert wird.

Das Implementierung des Makros "concat_idents!", Als prozedurales Makro neu geschrieben, das nicht an die concat_idents-Funktionalität gebunden ist und die Verwendung lokaler Variablenreferenzen ermöglicht.

Außerdem wird erwähnt, dass das Makro "static_assert!" wurde umgeschrieben, um "core::assert!()" zu erlauben wird in jedem Kontext anstelle von Konstanten verwendet, während das Makro "construction_error!" wurde angepasst, um zu funktionieren, wenn der Modus "RUST_BUILD_ASSERT_{WARN,ALLOW}" für Module eingestellt wird.

fs-Modul hinzugefügt die Links zum Arbeiten mit Dateisystemen bereitstellt. Ein Beispiel für ein einfaches, in Rust geschriebenes Dateisystem wird vorgeschlagen, ebenso wie das Job-Queue-Modul, das hinzugefügt wurde, um mit System-Queues zu arbeiten.

Von den anderen Änderungen die sich von diesem neuen Vorschlag abheben:

  • Separate Konfigurationsdatei "kernel/configs/rust.config" hinzugefügt.
  • Die in Makroersetzungen verarbeiteten "*.i"-Dateien wurden in "*.rsi" umbenannt.
  • Die Unterstützung für das Erstellen von Rust-Komponenten mit anderen Optimierungsstufen als denen, die für C-Code verwendet werden, wurde entfernt.
  • Die Entwicklung des kasync-Moduls wurde mit der Implementierung von asynchronen Programmiermethoden (async) fortgesetzt.
  • Ein Beispiel für einen in Rust geschriebenen TCP-Server auf Kernel-Ebene hinzugefügt und die Fähigkeit hinzugefügt, Interrupts in Rust zu handhaben.
  • Ein Prozedurmakro wurde hinzugefügt, um die Arbeit mit Funktionszeigertabellen, wie z. B. der file_operations-Struktur, zu vereinfachen.
  • Bidirektionale Linked-List-Implementierung „unsafe_list::List“ hinzugefügt.
  • Anfängliche Unterstützung für RCU und den Guard-Typ hinzugefügt, um zu prüfen, ob eine Lesesperre an den aktuellen Thread gebunden ist.
  • Funktion Task::spawn() hinzugefügt, um Kernel-Threads automatisch zu spawnen und zu starten.
  • Die Methode Task::wake_up() wurde ebenfalls hinzugefügt.
  • Verzögerungsmodul hinzugefügt

Schließlich wenn Sie mehr darüber wissen möchtenkönnen Sie die Details überprüfen 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.