可以在內核中實現Rust中的框架以改善驅動程序

Rust Linux內核

Josh Triplett,基於Intel的公司 並且是Crates.io開發監督委員會的成員, 前幾天已經提出了一個工作小組 在開源技術峰會上的演講中 目的是使Rust在Linux內核編程中與C並駕齊驅。

在正在創建的工作組中, Rust開發人員將與英特爾工程師一起制定規範 可以強調Rust在Linux內核中實現編程所需的功能。 系統編程通常需要低級操作,例如執行特權處理器指令和獲取有關處理器狀態的詳細信息。

在已經為Rust開發的類似功能中, 支持對未命名結構的支持,聯合(union),彙編程序插入(“ asm!”宏)和BFLOAT16浮點數格式。

喬什(Josh)相信系統編程的未來取決於Rust,而現代現實中的C語言則被認為是Assembler在過去的地位。 Rust不僅減輕了開發人員因內存底層工作而引起的特定C語言問題的負擔,而且還為現代編程範例的開發提供了適用性。

在討論喬什的講話時,這個想法表達給:

增加了在Linux內核中開發Rust語言驅動程序的能力,這將允許您以最小的努力來創建更好,更安全的驅動程序,從而減輕諸如釋放內存後訪問內存區域,引用空指針以及退出超出限制範圍之類的問題。緩衝區的。

格雷格·克魯亞·哈特曼, 負責維護Linux內核的穩定分支,以及x表示願意將Rust驅動程序框架添加到內核,如果它比C具有任何真正的優勢, 例如,它將在核心API上提供安全的綁定;此外,Greg將此框架僅視為默認情況下不活動的選項,以免在核心程序集依賴項中不包含Rust。

事實證明,已經有幾個團隊朝著這個方向努力。 例如,Fish in a Barrel開發人員準備了一個工具包,用於使用Rust語言編寫用於Linux內核的可加載模塊,並在內核接口和結構之上使用了一組抽象層來提高安全性。

中間層是根據可使用bindgen實用程序提供的內核頭文件自動生成的。 Clang用於構建中間層。 除圖層外,組裝的模塊還使用staticlib軟件包。

同時,正在開發另一個項目,重點是嵌入式系統控制器的開發。 和物聯網設備,該設備還使用bindgen基於內核頭文件生成項圈。

該框架允許您在不更改內核的情況下提高驅動程序的安全性。 建議不要在內核中為驅動程序創建其他隔離級別,而建議使用更安全的Rust語言在編譯階段阻止問題。

設備製造商應該能夠在沒有適當審核的情況下迅速開發這種方法。

尚未實現所有計劃的功能, 但是該框架已經非常適合該工作,並且用於在Raspberry Pi 9512板上為提供的LAN3 USB以太網控制器編寫一個有效的驅動程序。

編寫了現有的smsc95xx驅動程序 作為參考實施 用C語言編寫Rust驅動程序時。

注意,在為Rust開發驅動程序時,模塊大小和運行時組件開銷並不重要,這使您可以將框架用於資源受限的設備。

來源: https://hub.packtpub.com


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責資料:AB Internet Networks 2008 SL
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。

  1.   1路 他說:

    我無法在源代碼中找到有關smsc95xx驅動程序的信息,或者在Linux上的Rust中將實現某些內容。