一,内核模块功能: 让内核文件(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内核模块开发(示例代码)相关推荐

  1. 微信公众平台开发 微信公众平台示例代码分析

    一.摘要 微信公众平台提供了一个简单的php示例代码,在做进一步开发之前,我们有必要将其详细了解一下. 二.获取代码 微信官网:http://mp.weixin.qq.com/mpres/htmled ...

  2. linux c打印日志文件,linux c下log输出代码模板示例代码

    前言 本文主要介绍了关于linux c下log输出代码模板的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 模板 模本分为两个文件:log.c和log.h. log.c /* ...

  3. android百度地图例子,使用百度地图API进行Android地图应用开发(Eclipse)(示例代码)...

    随着基于位置的服务的兴起,地图类App呈现爆发趋势.随着而来的是地图供应商开放大量的API.供开发人员开发基于PC或者移动端的应用程序. 如今我们研究使用百度地图SDK进行Android项目的开发. ...

  4. python测网速_使用Linux命令行测试网速(示例代码)

    当发现上网速度变慢时,人们通常会先首先测试自己的电脑到网络服务提供商(通常被称为"最后一公里")的网络连接速度.在可用于测试宽带速度的网站中,Speedtest.net也许是使用最 ...

  5. linux mor命令使用技巧,linux中more命令如何使用(示例代码)

    more命令,功能类似cat,cat命令是整个文件的内容从上到下显示在屏幕上.兄弟连Linux培训教程(more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页 ...

  6. java1310错误,CC1310开发常见问题和解答(示例代码)

    CC1310开发过程中,可能遇到的主要问题和解决方法总结如下: 一.主要开发工具 1.CCS:最好安装最新的高版本:或者安装IAR也可以. 2.SmartRF Studio 7:PC端测试工具(可测试 ...

  7. openjdk linux tomcat,linux下配置安装OpenJDK+Tomcat(示例代码)

    一.安装OpenJDK Java 的 JDK 有 2 套,一是 Oracle 的 JDK,另一个就是 OpenJDK 了. 这里使用的是 OpenJDK 来作为 Java 的开发环境 用yum源安装y ...

  8. linux命令拉取windows的文件,find命令、文件名后缀以及Linux和Windows互传文件(示例代码)...

    find命令 文件查找: 1.which(一般用于查找命令的绝对路径) 2.whereis(不常用) 3.locate(非实时查找,基于预先定义的数据库.模糊查找,查找速度快.使用前要先安装这个命令y ...

  9. 初学linux系统代码,linux初学者-系统日志(二)(示例代码)

    先前在(一)中介绍到在不同主机间日志同步的方法,在一台主机上可以看到另一台主机的日志.这里会介绍系统日志方面的一些其他内容. 1.日志的采集格式 在日志的采集中,由图可以看出,这样的排列或者显示方式会 ...

  10. 端口映射工具linux,Linux下端口映射工具rinetd(示例代码)

    Linux下简单好用的工具rinetd,实现端口映射/转发/重定向 官网地址http://www.boutell.com/rinetd 软件下载 wget http://www.boutell.com ...

最新文章

  1. PAT (Advanced Level) 1078. Hashing (25)
  2. 如何有效地防止网站和手机APP的数据被采集?
  3. NTU 课程笔记:CV6422 置信区间
  4. OJ1075: 聚餐人数统计(C语言)
  5. zip 打包_Thinkphp6利用ZipArchive打包下载文件
  6. 处理字典值是把字典放内存还是用sql处理_python基础~元祖与字典原理
  7. 一千个哈姆雷特,一千个手游开发者
  8. 安装了360安全卫士和瑞星杀毒,看迅雷电影很卡,谁有知道的
  9. 面试官问:你的缺点是什么,这么回答漂亮!(真实案例)
  10. ASP.NET清除Cookies
  11. vue 简单实现组件自动注册
  12. 显卡测试软件毛毛虫,ATI Radeon Xpress200M与Intel GMA950谁强些?
  13. 文件搜索工具(Python实现)
  14. html兼容ie7ie8,解决IE6、IE7、IE8样式不兼容问题
  15. ruby on rails 日志: log4r
  16. 视频教程-Excel从HR到Hero-Office/WPS
  17. Nervos 联合 Gitcoin 共同推出 5 万美元的开发者赏金计划
  18. iOS学习路线图--UIKIt概述
  19. 白鹭引擎拉伸高度_答疑汇总|白鹭引擎架构师开源中国社区分享微信小游戏开发技巧...
  20. C++入门到精通 ——第七章 STL标准模板库大局观

热门文章

  1. java有趣的平方数_JAVA小程序之独特的完全平方数问题
  2. python开发公司网站_用python开发网站
  3. python os path isfile_Python path.isfile方法代码示例
  4. python图片识别是否p过_Python+Opencv进行识别相似图片
  5. PHP 接收 UDP包_UDP详解(广播,组播)(转)
  6. Mariadb升级到mysql_mariadb的版本升级方法
  7. fedora 16 下搭建gvim+xdebug调试环境
  8. NET 对象生命周期
  9. vue04-components
  10. Entity Framework 相关知识点合集