微软工程师发送Rust Linux内核补丁,用于原地模块初始化

微软工程师发送Rust Linux内核补丁,用于原地模块初始化-每日运维
我们生活在这样一个时代,微软不仅继续为Linux内核做出重大贡献,而且还进一步充实了Linux内核的Rust编程语言支持的设计。这是以前难以想象的微软、Rust编程语言和Linux内核的组合。

微软工程师Wedson Almeida Filho已经发布了Rust Linux内核代码分配api的最新补丁,并利用这些提议的api来允许Rust内核模块的原位模块初始化。Wedson Almeida Filho从谷歌工程师时代就一直是Rust for Linux的长期贡献者,过去两年在微软的Rust for Linux活动没有任何放缓的迹象。

Linux内核的Rust分配api的第二次迭代:

我们目前有一个对“Vec”进行修改的crate分支;其他更改已经上溯(到Rust项目)。本系列删除了分支,并将所有功能作为扩展特征公开。

此外,它还为所有可能导致分配的函数(例如,' Box::new ', ' Arc::new ', ' Vec::push '等)引入了分配标志参数,而没有' try_ '前缀-这些名称是可用的,因为我们用' no_global_oom_handling '构建' alloc '。

最后,本系列还消除了我们对“allocator_api”不稳定特性的依赖。

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

总而言之:

1. 移除' alloc '分叉

2. 移除' allocator_api '不稳定特性的使用

3. 在分配时引入标志(例如,GFP_KERNEL, GFP_ATOMIC)

然后在内核中为Rust构建分配api,微软工程师今天也发布了Rust内核模块的原位模块初始化补丁。建议的补丁允许模块就地初始化,而不是模块需要返回一个被移动到其最终内存位置的实例:

这允许我们拥有一些模块,其状态包含必须像锁一样初始化的对象。它还允许我们就地实施注册(例如,驾驶员注册),并使其与C对应的类似,而不需要新的分配。”

The Rust for Linux kernel effort remains a very vibrant effort with a wide variety of organizations contributing, even Microsoft engineers.