Linux内核模块与字符设备驱动开发详解
1. 移除模块
在Linux系统中,可以使用 rmmod 命令将模块从内核中分离。例如,要移除 hello 模块,可以执行以下命令:
# rmmod hello
# dmesg | tail -n1
Good−bye, kernel!
2. 模块工作原理
linux/module.h 包含了 linux/config.h 等头文件, linux/config.h 中包含了内核编译时选择的选项。例如,如果内核为SMP编译, CONFIG_SMP 将被定义,我们可以相应地定义 __SMP__ 。对于 CONFIG_MODVERSIONS 也是如此,如果进行了配置,我们定义 MODVERSIONS 并包含 linux/modversions.h 以获取版本信息。
模块加载和卸载时,会向内核缓冲区打印一条消息。 init_module 在加载时调用,负责设置内部数据结构、初始化硬件等; cleanup_module 负责关闭设备并释放设备占用的资源。
3. 字符设备
简单的 hello 模块加载后无法与
超级会员免费看
订阅专栏 解锁全文
1645

被折叠的 条评论
为什么被折叠?



