自Linux 6.1起,初始的Rust基础设施被添加到Linux内核中。此后为了使内核驱动程序能够用Rust编程语言编写,Linux内核已经合并了许多其他管道和内务管理工作。随着即将到来的Linux 6.8内核周期,第一个Rust网络驱动程序将被引入。最近一个“net-phy-rust”驱动程序被合并到了net-next.git分支。该驱动为phylib Rust绑定...
这段驱动代码中使用了 Rust for Linux 中提供的 kernel 库,用其中包括的抽象 gpio、irq、amba、power准确表达了这段驱动代码中的结构和实现意图,可以更好地和驱动开发者对驱动开发建立的心智模型对应起来,这就是 Rust 语言的抽象表达能力。 gpio::Chip trait 是对 gpio chip 的一种跨平台抽象接口,它也是一种依...
这段驱动代码中使用了 Rust for Linux 中提供的kernel库,用其中包括的抽象gpio、irq、amba、power准确表达了这段驱动代码中的结构和实现意图,可以更好地和驱动开发者对驱动开发建立的心智模型对应起来,这就是 Rust 语言的抽象表达能力。 gpio::Chiptrait 是对 gpio chip 的一种跨平台抽象接口,它也是一种依赖倒置。
开发者就此询问了 Linux 内核稳定版维护者 Greg Kroah-Hartman,Greg 表示愿意接受用 Rust 开发 Linux 内核的驱动程序,但前提是:1)以可选的方式存在,而不是默认启用,这样其他开发者就不需要使用 Rust 去构建内核;2)Rust 驱动需要体现出比 C 驱动具有优势,比如针对内核 API 的安全封装器。 不过底下有开发者指出...
2024年12月,Linux社区宣布了6.14版本内核的重要更新,标志着在驱动程序开发领域的一个新里程碑。这一版本将支持使用Rust编程语言编写的PCI和平台设备驱动程序。这一决定不仅强化了Linux内核的现代化趋势,也为未来基于Rust的驱动程序奠定了基础,尤其是在安全性和性能方面的显著提升。随着Linux进一步整合Rust,开发者和用户将...
驱动程序级的 Rust 代码则要简单易懂得多。Torvalds 重申,就目前而言,维护者将可以说他们不想接受 Rust。但 Starovoitov 反驳说,无论他如何决定,BPF 都会受到影响;开发者需要能够对 Rust 代码进行跟踪 来调试问题。他补充说,每个人最终都会需要了解 Rust。Torvalds 回答说,他预计这个过程需要几年时间。
在Linux当中一旦内核态的代码执行中出现不可恢复的错误,一般是通过panic操作来记录相关信息及调用栈,但由于Rust的内存申请与释放机制,其编译器通常会隐藏内存分配的操作,这就很可能使panic!()的调用出现问题。而且在某些驱动程序中,内存分配失败不应该直接使内核产生panic,因此Rust在申请内存失败后如果直接调用panic!,可...
近期,Linux内核开发者们迎来了一个重大转折点。根据最新的消息,Rust编程语言的支持将全面进军Linux内核核心,特别是在驱动程序的开发上。这一变革不仅标志着技术上的一次重要更新,也为开源社区带来了新的机遇。项目负责人Miguel Ojeda在RustConf2024的演讲中透露,随着Linux 6.13内核的发布,Rust编程语言的整合正在逐步成为现...
Rust 与 Linux 设备驱动开发 基础概念 和应用程序不同,驱动程序是可以直接和硬件设备进行通讯的。驱动程序作为 Linux 内核的一种模块被动态加载到内核中。编译好的模块一般以.ko(kernel object)为文件扩展后缀 (这让我想起自己在 Linux 下安装 Nvidia 驱动报错找不到 nvidia.ko ...
Rust 是最近几年很火的一门编程语言,由 Mozilla 公司开发。据说安全性要比 C 或 C++ 语言好,而且效率可以媲美 C 或 C++ 语言。目前谷歌在力推,正在逐步替换进Android。貌似Linux内核也在接受改变,网上有传,占据linux内核代码将近一半的驱动代码,有率先被 Rust 替换开发的可能;也就是说,以后我们写 linux 驱动代...