1.内核加载函数

  即我们常说的内核入口函数,当内核被加载的时候调用,在内核入口函数中多进行设备的注册和初始化,其中最常用的莫过于module_init()。insmod xxx.ko的时候调用。

通常初始化函数定义为xxx_init,可以使用__init进行修饰

2.内核卸载函数

  内核模块的出口,调用rmmod xxx.ko的时候调用,通常在该函数中进行注册模块的注销和硬件的状态的恢复;__exit修改该函数表明该函数为退出函数

加载和卸载示例如下:(均定义于linux/init.h,所以在编程的时候需要加上#include <linux/init.h>)

3.模块许可声明

  常见的形式为MODULE_LICENSE("GPL")  或  MODULE_LICENSE("GPL v2"),该声明语句表明了内核的允许权限,支持GPL协议

4.模块参数

  这个用到的比较少,格式为module_para(变量名,类型,权限);使用方式为insmod xxx.ko 变量名=xx,具体可看对于module_para介绍的博文,链接如下

http://blog.csdn.net/chdhust/article/details/8228888

5.模块导出符号

  内核模块可以将本模块的符号导出,供其他模块进行使用,使用方式有EXPORT_SYMBOL(符号名)和EXPORT_SYMBOL_GPL(符号名),EXPORT_SYMBOL_GPL只适用于包含GPL许可的模块

6.模块的声明与描述

  MODULE_AUTHOR();     //模块作者

  MODULE_DESCRIPTION(); //模块描述

  MODULE_VERSION();   //模块版本

  MODULE_DEVICE_TABLE();   //模块设备表

  MODULE_ALIAS();       //模块的别名

最新文章

  1. Oracle数据库的链接数目超标
  2. A Simple OpenGL Shader Example
  3. ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理
  4. 探索 OpenStack 之(16):计量模块 Ceilometer 介绍及优化
  5. 2.2孙鑫C++
  6. Web Adaptor重装配置时 提示已经配置成功的问题
  7. L型代码结构案例:Link访问权限(上)
  8. 【jQuery】复选框的全选、反选,推断哪些复选框被选中
  9. Kubernetes 架构(上)- 每天5分钟玩转 Docker 容器技术(120)
  10. leetCode58. 最后一个单词的长度
  11. JSP之连接SQL Server
  12. Scala 偏函数
  13. go标准库的学习-time
  14. noip2016 天天爱跑步
  15. Scala:Next Steps in Scala
  16. 世界线(bzoj2894)(广义后缀自动机)
  17. lintcode-202-线段树的查询
  18. 使用 JMeter 完成常用的压力测试
  19. Java的图形界面依然是跨平台的
  20. 服务容错处理库Polly使用

热门文章

  1. GUI RedHat7中常用的一些设置
  2. 微信小程序--ajax服务器交互及页面渲染
  3. HashMap和ConcurrentHashMap流程图
  4. linux 增量备份命令Rsync 使用详解
  5. C++中模板Template的使用
  6. python 斐波那契数列 fibonacci
  7. UCOSii项目在NIOSii上的移植
  8. UX是什么?
  9. JavaScript 中运算优先级问题
  10. 24点游戏详细截图介绍以及原型、Alpha、Beta对比