Artiklen gennemgår en Rust-udgave af en Linux-kernedriver til Asix AX88796B-baserede Ethernet-phyer skrevet af Fujita Tomonori i 2023.
Rust-koden bruger use-erklæringer til selektiv import i stedet for C’s #include, og henter kernebindings via kernel-craten og kernel::prelude-modulet.
Registrering af drivere i Rust sker med module_phy_driver!-makroen, som erstatter C’s module_phy_driver()-makro og struct phy_driver.
Konstanter defineres med const og kræver typespecifikation, mens typekonstruktionen og casting sker med as-operatoren.
Fejlhåndtering i Rust benytter Result-type og try-operatoren (‘?’), hvilket forenkler propagation af fejl sammenlignet med C.
Driverens implementering bruger en tom struct, trait-implementering med impl Driver og #[vtable]-makroen for at generere C-kompatible funktionspointere.
Rust-traits giver statisk type-dispatch og sikker håndtering af mutable referencer, hvilket mindsker risiko for datakontention sammenlignet med C.
Overordnet er udviklingsflowet for en PHY-driver i Rust analogt med C: boilerplate, implementering af nødvendige funktioner og registrering i kernens PHY-subsystem.
Get notified when new stories are published for "🇩🇰 Hacker News Dansk"