一个新手对(用于)Linux 的 Rust 的首次贡献

主要观点:作者将嵌入式 Linux 驱动从 C 重写为 Rust,分享了这一过程中的经验,包括编译内核、配置 Kconfig、添加 Rust 抽象层、处理版本控制及安全 API 封装等方面。
关键信息

  • 在 Raspberry Pi 上编译内核,使用justfile提高效率。
  • 介绍 Kconfig 系统,其复杂但通过dependsselects定义依赖关系。
  • 解决 Rust 编译内核问题,通过./scripts/config脚本配置。
  • 重写驱动时需添加安全 API 包装,通过互联网搜索或 Zulip 聊天获取。
  • 阐述内核开发中版本控制的困难,如内核更新快、fork 多等。
  • 展示在 Rust 中安全读取设备树属性的方法,包括封装 C 结构体、引用计数、迭代器及防止缓冲区溢出等。
  • 对 LKML 邮件列表发送和审查补丁的过程表示不满。
    重要细节
  • MEDIA_SUBDRV_AUTOSELECT的 Kconfig 定义及作用。
  • make menuconfig搜索功能及配置变量的依赖关系。
  • 重写驱动时 C 宏与 Rust 常量的替换及类型声明。
  • Git 配置用于并行开发和提交管理。
  • 具体的 Rust 代码示例,如FwNode的封装、引用计数实现、迭代器和防止缓冲区溢出的函数等。
  • LKML 上的相关补丁系列及链接。
阅读 11
0 条评论