linux 内核模块开发,linux内核模块开发(示例代码)
一,内核模块功能: 让内核文件(zImage或bzImage)本身并不包含某组件,而是在该
组件需要被使用的时候,动态地添加到正在运行的内核中
二,内核模块安装和卸载
加载:insmod (insmod hello.ko)
卸载:rmmod (rmmod hello)
查看:lsmod
加载:modprobe (modprobe hello)
modprobe如同insmod,也是加载一个模块到内核。它的不同之处在于它会根据文件
/lib/modules//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
#include
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
linux 内核模块开发,linux内核模块开发(示例代码)相关推荐
- 微信公众平台开发 微信公众平台示例代码分析
一.摘要 微信公众平台提供了一个简单的php示例代码,在做进一步开发之前,我们有必要将其详细了解一下. 二.获取代码 微信官网:http://mp.weixin.qq.com/mpres/htmled ...
- linux c打印日志文件,linux c下log输出代码模板示例代码
前言 本文主要介绍了关于linux c下log输出代码模板的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 模板 模本分为两个文件:log.c和log.h. log.c /* ...
- android百度地图例子,使用百度地图API进行Android地图应用开发(Eclipse)(示例代码)...
随着基于位置的服务的兴起,地图类App呈现爆发趋势.随着而来的是地图供应商开放大量的API.供开发人员开发基于PC或者移动端的应用程序. 如今我们研究使用百度地图SDK进行Android项目的开发. ...
- python测网速_使用Linux命令行测试网速(示例代码)
当发现上网速度变慢时,人们通常会先首先测试自己的电脑到网络服务提供商(通常被称为"最后一公里")的网络连接速度.在可用于测试宽带速度的网站中,Speedtest.net也许是使用最 ...
- linux mor命令使用技巧,linux中more命令如何使用(示例代码)
more命令,功能类似cat,cat命令是整个文件的内容从上到下显示在屏幕上.兄弟连Linux培训教程(more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页 ...
- java1310错误,CC1310开发常见问题和解答(示例代码)
CC1310开发过程中,可能遇到的主要问题和解决方法总结如下: 一.主要开发工具 1.CCS:最好安装最新的高版本:或者安装IAR也可以. 2.SmartRF Studio 7:PC端测试工具(可测试 ...
- openjdk linux tomcat,linux下配置安装OpenJDK+Tomcat(示例代码)
一.安装OpenJDK Java 的 JDK 有 2 套,一是 Oracle 的 JDK,另一个就是 OpenJDK 了. 这里使用的是 OpenJDK 来作为 Java 的开发环境 用yum源安装y ...
- linux命令拉取windows的文件,find命令、文件名后缀以及Linux和Windows互传文件(示例代码)...
find命令 文件查找: 1.which(一般用于查找命令的绝对路径) 2.whereis(不常用) 3.locate(非实时查找,基于预先定义的数据库.模糊查找,查找速度快.使用前要先安装这个命令y ...
- 初学linux系统代码,linux初学者-系统日志(二)(示例代码)
先前在(一)中介绍到在不同主机间日志同步的方法,在一台主机上可以看到另一台主机的日志.这里会介绍系统日志方面的一些其他内容. 1.日志的采集格式 在日志的采集中,由图可以看出,这样的排列或者显示方式会 ...
- 端口映射工具linux,Linux下端口映射工具rinetd(示例代码)
Linux下简单好用的工具rinetd,实现端口映射/转发/重定向 官网地址http://www.boutell.com/rinetd 软件下载 wget http://www.boutell.com ...
最新文章
- PAT (Advanced Level) 1078. Hashing (25)
- 如何有效地防止网站和手机APP的数据被采集?
- NTU 课程笔记:CV6422 置信区间
- OJ1075: 聚餐人数统计(C语言)
- zip 打包_Thinkphp6利用ZipArchive打包下载文件
- 处理字典值是把字典放内存还是用sql处理_python基础~元祖与字典原理
- 一千个哈姆雷特,一千个手游开发者
- 安装了360安全卫士和瑞星杀毒,看迅雷电影很卡,谁有知道的
- 面试官问:你的缺点是什么,这么回答漂亮!(真实案例)
- ASP.NET清除Cookies
- vue 简单实现组件自动注册
- 显卡测试软件毛毛虫,ATI Radeon Xpress200M与Intel GMA950谁强些?
- 文件搜索工具(Python实现)
- html兼容ie7ie8,解决IE6、IE7、IE8样式不兼容问题
- ruby on rails 日志: log4r
- 视频教程-Excel从HR到Hero-Office/WPS
- Nervos 联合 Gitcoin 共同推出 5 万美元的开发者赏金计划
- iOS学习路线图--UIKIt概述
- 白鹭引擎拉伸高度_答疑汇总|白鹭引擎架构师开源中国社区分享微信小游戏开发技巧...
- C++入门到精通 ——第七章 STL标准模板库大局观
热门文章
- java有趣的平方数_JAVA小程序之独特的完全平方数问题
- python开发公司网站_用python开发网站
- python os path isfile_Python path.isfile方法代码示例
- python图片识别是否p过_Python+Opencv进行识别相似图片
- PHP 接收 UDP包_UDP详解(广播,组播)(转)
- Mariadb升级到mysql_mariadb的版本升级方法
- fedora 16 下搭建gvim+xdebug调试环境
- NET 对象生命周期
- vue04-components
- Entity Framework 相关知识点合集