Linux设备驱动3快速参考汇总--建立和运行模块
时间:2016-12-30作者:华清远见
insmod 用户空间工具, 加载模块到运行中的内核以及去除它们.
#include <linux/init.h> 指定模块的初始化和清理函数的宏定义.
__init 函数( __init 和 __exit )和数据 (__initdata 和 __exitdata)的标记, 只用在模块初始化或者清理时间. 为初始化所标识的项可能会在初始化完成后丢弃; 退出的项可能被丢弃如果内核没有配置模块卸载. 这些标记通过使相关的目标在可执行文件的特定的 ELF 节里被替换来工作. #include <linux/sched.h> 重要的头文件中的一个. 这个文件包含很多驱动使用的内核 API 的定义, 包括睡眠函数和许多变量声明. struct task_struct *current; 当前进程.
current->pid 进程 ID 和 当前进程的命令名. obj-m 一个 makefile 符号, 内核建立系统用来决定当前目录下的哪个模块应当被建立.
/sys/module vermagic.o
来自内核源码目录的目标文件, 描述一个模块为之建立的环境.
必需的头文件. 它必须在一个模块源码中包含.
头文件, 包含在建立的内核版本信息.
整型宏定义, 对 #ifdef 版本依赖有用.
宏定义, 用来输出一个符号给内核. 第 2 种形式输出没有版本信息, 第 3 种限制输出给 GPL 许可的模块.
放置文档在目标文件的模块中.
宏定义, 声明一个模块的初始化和清理函数.
宏定义, 创建模块参数, 可以被用户在模块加载时调整( 或者在启动时间, 对于内嵌代码). 类型可以是 bool, charp, int, invbool, short, ushort, uint, ulong, 或者 intarray. 内核代码的 printf 类似物. 相关资讯
发表评论
|