开源中国-最新资讯 ( ) • 2024-03-29 00:46

微软工程师 Wedson Almeida Filho 发布了一个针对 Rust Linux 内核代码的 Allocation API 的最新补丁,并利用这些提议的 API 来允许 Rust 内核模块进行就地模块初始化。Wedson Almeida Filho 一直是 Rust for Linux 的长期贡献者,最早可以追溯到他在 Google 工作的时候。

解释道:

我们目前我们有一个对 Vec 进行了修改的 crate fork;其他更改已被上传到上游(Rust 项目)。本系列删除了分叉并将所有功能公开为扩展特征。

此外,它还向所有可能导致分配的函数(例如 “Box::new”、“Arc::new”、“Vec::push”等)引入了不带 try_ 前缀的 allocation flag 参数--这些名称之所以可用,是因为我们在构建 alloc 时使用了no_global_oom_handling。

最后,该系列还消除了我们对“allocator_api”不稳定功能的依赖。

从长远来看,我们仍然希望在上游 Rust 中提供此类功能,但这使我们现在就能够取得进展并减少维护负担。

总结:

  1. 删除 alloc 分支
  2. 删除使用 allocator_api 不稳定功能
  3. 分配时引入标志(例如 GFP_KERNEL、GFP_ATOMIC)

在内核中为 Rust 提供的 Allocation API 工作的基础上,他还发布了 Rust 内核模块的就地模块初始化补丁。提出的补丁允许对模块进行就地初始化,而不是让模块返回一个被移动到最终内存位置的实例。