指南

本文档描述了适用于 nova-core 和 nova-drm 的通用项目指南。

语言

Nova 项目使用 Rust 编程语言。 在这种情况下,适用于 Linux 项目的所有 Rust 规则,如 通用信息 中记录的那些规则,均适用。 此外,还适用以下规则。

  • 除非技术上另有必要(例如,uAPI),否则任何驱动程序代码都用 Rust 编写。

  • 除非技术上必要,否则必须避免不安全的 Rust 代码。 如果技术上必要,则应将不安全的代码隔离在单独的组件中,为其他驱动程序代码提供安全的 API 以供使用。

样式

适用于 Linux 项目的所有 Rust 规则,如 编码指南 中记录的那些规则,均适用。

有关提交清单,另请参见 Linux 提交清单附录的 Rust

文档

就可扩展性、新贡献者的可访问性以及项目的可维护性而言,适当文档的可用性至关重要,特别是对于像 Nova 这样针对复杂硬件运行的驱动程序。

因此,项目非常鼓励添加任何类型的文档。

除此之外,还有一些最低要求。

  • 每个非私有结构至少需要一个简短的文档注释,以解释该结构的语义意义,以及潜在的锁定和生命周期要求。 鼓励对非平凡的私有结构使用相同的最低文档。

  • uAPI 必须使用 kernel-doc 注释完全记录;此外,必须解释语义行为,包括潜在的特殊或极端情况。

  • 连接一级驱动程序 (nova-core) 与二级驱动程序的 API 必须完全记录。 这包括文档注释、潜在的锁定和生命周期要求,以及适用的示例代码。

  • 缩写必须在引入时进行解释;术语必须唯一地定义。

  • 寄存器地址、布局、移位值和掩码必须正确定义;除非显而易见,否则必须记录语义意义。 这仅适用于作者能够获得相应信息的情况。

验收标准

  • 补丁必须仅在经过邮件列表上的至少另一人审查后才能应用;这也适用于维护者。