Hasty Briefsbeta

双语

Rust in the Linux kernel: part 2

a year ago
  • #Rust
  • #Driver Development
  • #Linux Kernel
  • 藤田智则在2023年编写了Asix AX88796B嵌入式以太网控制器驱动的Rust版本,为内核中Rust与C语言的对比提供了简单示例。
  • Rust驱动以法律声明和文档注释开头,随后是通过`use`语句从内核crate导入必要模块。
  • 使用宏`kernel::module_phy_driver!`为PHY驱动设置符号,类似于C语言的`module_phy_driver()`宏。
  • 常量`BMCR_SPEED100`和`BMCR_FULLDPLX`在Rust中定义,带有显式类型标注并从C定义的常量转换而来。
  • 共享函数`asix_soft_reset`展示了Rust通过`Result`和尝试运算符`?`的错误处理机制,与C语言的错误传播形成对比。
  • AX88796B的主驱动实现为空结构体`PhyAX88796B`,通过`#[vtable]`属性实现`Driver`特征以对接C语言的PHY驱动基础设施。
  • 文章最后总结了用C语言与Rust实现PHY驱动的步骤对比,重点突出了Rust的特征系统和宏的使用方式。