Skip to Content
CoolPotOS 4.0 rebuild developing

NeoAetherOS Kernel Module

内核模块编译及加载

直接在源代码的 modules 文件夹下拷贝其他简单的内核模块稍作修改 (将 GNUmakefile 中的 KM_NAME 修改为你的内核模块名称)

编译出的格式为 .ko ( 实则 elf )

文件

注: 目前的内核模块不支持动态卸载, 一旦加载不可释放, 如想卸载模块, 更改引导器配置文件并重启内核 (将来可能会支持)

入口函数

dlmain

内核会调用每个模块的 dlmain 函数.
此时模块可以注册文件系统, 加载驱动等.

以下是函数示例定义

int dlmain(void) { return 0; }
Warning

注意: dlmain 的定义不可省略, 如没有此主函数, 内核模块会加载失败.

Warning

注意: 如果 dlmain 返回了非0值, 代表该内核模块初始化失败

API

NAOS 内核模块支持导出函数以供其他模块进行调用, 但是你需要保证被依赖模块优先于其他模块加载
调整引导配置文件的模块加载顺序即可

Warning

注意: 模块禁止循环依赖, 否则内核无法正确重定向两个互相引用的模块

头文件可直接使用内核内部文件,所以如果内核接口变动,模块也需要进行重写

兼容性

部分子系统的函数定义与 CoolPotOS 相似, 部分内核模块可以以很小的代价相互移植.
有关 CoolPotOS 的内核模块定义, 详见 CPOS Kernel Module

Last updated on