博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux内核模块开发
阅读量:7119 次
发布时间:2019-06-28

本文共 1820 字,大约阅读时间需要 6 分钟。

 

一,内核模块功能: 让内核文件(zImage或bzImage)本身并不包含某组件,而是在该 

组件需要被使用的时候,动态地添加到正在运行的内核中

二,内核模块安装和卸载

加载:insmod (insmod hello.ko)
卸载:rmmod (rmmod hello)
查看:lsmod
加载:modprobe (modprobe hello)
modprobe如同insmod,也是加载一个模块到内核。它的不同之处在于它会根据文件
/lib/modules/<$version>/modules.dep
来查看要加载的模块,看它是否还依赖于其他模块,如果是,modprobe会首先找到 
这些模块,把它们先加载到内核。

三,模块可选信息:

1、许可证申明
宏MODULE_LICENSE用来告知内核, 该模块带有一个许可证,没有这样的说明,加载模 
块时内核会抱怨。有效的许可证有"GPL“、"GPL v2"、"GPL and 
additionalrights"、"Dual BSD/GPL"、"Dual MPL/GPL"和"Proprietary"。
2、作者申明(可选)
MODULE_AUTHOR(“Simon Li");
3、模块描述(可选)
MODULE_DESCRIPTION("Hello World Module");
4、模块版本(可选)
MODULE_VERSION("V1.0");
5、模块别名(可选)
MODULE_ALIAS("a simple module");
6、模块参数
通过宏module_param指定模块参数,模块参数用于在加载模块时传递参数给模块。
module_param(name,type,perm)
name是模块参数的名称,type是这个参数的类型,perm是模块参数的访问 
权限。
type常见值:
bool:布尔型 int:整型 charp:字符串型
perm 常见值:
S_IRUGO:任何用户都对/sys/module中出现的该参数具有读权限
S_IWUSR:允许root用户修改/sys/module中出现的该参数
/**************PARAM**************************/
#include<linux/init.h>
#include<linux/module.h>

MODULE_LICENSE("GPL");

static char *name = "Daniel Guo";

static int age = 30;

module_param(age, int, S_IRUGO); 

module_param(name, charp, S_IRUGO);

static int __init hello_init()

{
printk(KERN_EMERG" Name:%s\n", name);
printk(KERN_EMERG" Age:%d\n", age);
return 0;
}

static void __exit hello_exit()

{
printk(KERN_INFO" Module Exit\n");
}

module_init(hello_init);

module_exit(hello_exit);

/***************************************************/

命令:
make
insmod param.ko
rmmod param
insmod param.ko age=12
/****************************************************/

四,内核符号导出
/proc/kallsyms 记录了内核中所有导出的符号的名字与地址。
EXPORT_SYMBOL(func); /*func为函数名称,供其他模块使用的*/
内核符号的导出使用:
EXPORT_SYMBOL(符号名)
EXPORT_SYMBOL_GPL(符号名)
其中EXPORT_SYMBOL_GPL只能用于包含GPL许可证的模块。

 

http://www.cnblogs.com/FORFISH/p/5188421.html

转载于:https://www.cnblogs.com/xiaoxiaodewo/p/5621630.html

你可能感兴趣的文章
4-2 ADO.NET-查询和检索数据7
查看>>
Day7:html和css
查看>>
centOS7 安装Git
查看>>
超全的设计模式简介(45种)
查看>>
Modbus功能码
查看>>
spring cloud互联网分布式微服务云平台规划分析--spring cloud定时调度平台
查看>>
Visual Sudio 复制窗体文件
查看>>
Google Auth+openssh
查看>>
Windows 8 新启动方式:混合启动(Hybrid Boot)
查看>>
Golang、python中的字符串、slice、list性能研究。
查看>>
我的友情链接
查看>>
SQLite Administrator 中文乱码的问题
查看>>
某网贷平台遭受***
查看>>
ElasticSearch 查询
查看>>
Zabbix通过JMX监控tomcat
查看>>
第七天 date
查看>>
整数数字转读音
查看>>
《大话设计模式》读书总结
查看>>
zabbix_proxy部署
查看>>
CentOS 6.5 apache源码安装2.0版
查看>>