#内核模块 #freebsd #kmod #api-bindings

nightly no-std freebsd-kmi-rs

FreeBSD内核模块编程接口

3个不稳定版本

0.3.0 2024年2月8日
0.2.2 2023年12月7日
0.2.1 2023年11月25日

#610操作系统

每月 25次下载

自定义许可证

77KB
2K SLoC

FreeBSD内核模块接口Rust包

此存储库包含构建内核模块和安全的实现所需的一切!通过 FreeBSD-KPI-RS 包提供FreeBSD内核的绑定。

支持的FreeBSD版本

  • 13.1 RELENG(RELEASE)!!!不再维护。
  • 14.0 RELENG(RELEASE)<-- 当前

发布

!!! 只会积极支持FreeBSD的最新(主要)版本。一旦发布新主要版本,旧版本将自动移动到 legacy

例如:当前13.1。当14.0发布时,当前将变为14.0

目前无法为x.x-CURRENT或x.x-STABLE提供可用的 KPIKMI

功能

内存分配

GLOBAL_ALLOC_DISABLED - 禁用内核分配器的内置实现。

以下之一:GLOBAL_ALLOC_FLAG_WAITOK - 通知malloc您的内核模块可以等待堆空间。或者:GLOBAL_ALLOC_FLAG_NOWAIT - 通知malloc您的内核模块不应等待堆空间。GLOBAL_ALLOC_FLAG_USERESERVE - 改变NOWAIT行为的附加功能。

应该声明上述之一。

GLOBAL_ALLOC_EXCLUDE_PANICHANDLER - 排除默认的 \#\[panic_handler\] GLOBAL_ALLOC_EXCLUDE_ALLOC_ERROR_HNDL- 排除 \#\[alloc_error_handler\]

编程指南

默认情况下,此包实现了常见的 GlobalAllocator``. 建议不要使用它,并从 use 它和调用 macroglobal_alloc.rs来实现自己的. 此外,crate 应该编译设置功能GLOBAL_ALLOC_DISABLED`。

不幸的是,默认情况下需要GlobalAllocator。

默认的 panic_handleralloc_error_handler 作为GlobalAllocator的一部分包含在内。两者都可以通过包含功能 GLOBAL_ALLOC_EXCLUDE_PANICHANDLER GLOBAL_ALLOC_EXCLUDE_ALLOC_ERROR_HNDL 来覆盖。

可以使用 heap_alloc/alloc.rs 中的宏声明自定义的 malloc 实例。

请求

todo

依赖项

~3.5MB
~65K SLoC