Linux内核模块

Linux内核模块

操作系统分为宏内核和微内核。

 - 宏内核:关键功能和服务功能均在内核空间提供。运行效率高,但扩展性较差。
 - 微内核:内核空间只提供关键功能,服务功能在用户空间提供。运行效率较低,安全性,扩展性较高。

	
Linux 使用宏内核,但是宏内核有一个缺点就是扩展性比较差,为了弥补这一缺陷,Linux加入了内核模块,可以方便的加载和卸载内核模块,弥补扩展性差这一缺陷。

加载与卸载内核模块

depmod(depend module)命令分析可载入模块的相关依赖性,供modprobe在安装模块时使用。
depmod命令会生成modules.dep文件。
modprobe *.ko 加载内核模块
modprobe不需要指定路径,是因为modprobe命令有默认的加载路径。
使用modprobe加载模块时,modprobe会到/lib/modules/(shell uname -r)目录下查找模块文件。
使用modprobe加载模块时,modprobe依赖于/lib/modules/(shell uname -r)/modules.dep文件,modules.dep文件列举了modprobe可加载的内核文件及其内核文件所依赖的文件。

depmod 分析模块依赖关系
modprobe *.ko 加载内核模块
insmod *.ko 加载内核模块
rmmod *.ko 卸载内核模块
lsmod 查看内核已加载模块

内核模块的入口和出口

函数声明:/include/linux/init.h
module_init(); 入口函数
module_exit(); 出口函数

内核模块的信息声明

函数声明:/include/linux/module.h
MODULE_LICENSE();
MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_ALIAS();

内核提供的打印函数

函数声明:/include/linux/printk.h
printk();

内核模块传递参数

#define module_param(name, type, perm)	module_param_named(name, name, type, perm)
name 参数名字
type 参数类型
perm 可执行权限

内核模块符号共享

#define EXPORT_SYMBOL(sym)
sym 变量或者函数
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Paper_Love

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值