可以在内核中实现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中将实现某些内容。