Linux设备驱动3快速参考汇总--建立和运行模块
来源:互联网 发布:2017年8月m2数据 编辑:程序博客网 时间:2024/06/05 19:07
作者:孙晓明,华清远见嵌入式学院讲师。
insmod
modprobe
rmmod
用户空间工具, 加载模块到运行中的内核以及去除它们.
#include <linux/init.h>
module_init(init_function);
module_exit(cleanup_function);
指定模块的初始化和清理函数的宏定义.
__init
__initdata
__exit
__exitdata
函数( __init 和 __exit )和数据 (__initdata 和 __exitdata)的标记, 只用在模块初始化或者清理时间. 为初始化所标识的项可能会在初始化完成后丢弃; 退出的项可能被丢弃如果内核没有配置模块卸载. 这些标记通过使相关的目标在可执行文件的特定的 ELF 节里被替换来工作.
#include <linux/sched.h>
最重要的头文件中的一个. 这个文件包含很多驱动使用的内核 API 的定义, 包括睡眠函数和许多变量声明.
struct task_struct *current;
当前进程.
current->pid
current->comm
进程 ID 和 当前进程的命令名.
obj-m
一个 makefile 符号, 内核建立系统用来决定当前目录下的哪个模块应当被建立.
/sys/module
/proc/modules
/sys/module 是一个 sysfs 目录层次, 包含当前加载模块的信息. /proc/moudles 是旧式的, 那种信息的单个文件版本. 其中的条目包含了模块名, 每个模块占用的内存数量, 以及使用计数. 另外的字串追加到每行的末尾来指定标志, 对这个模块当前是活动的.
vermagic.o
来自内核源码目录的目标文件, 描述一个模块为之建立的环境.
#include <linux/module.h>
必需的头文件. 它必须在一个模块源码中包含.
#include <linux/version.h>
头文件, 包含在建立的内核版本信息.
LINUX_VERSION_CODE
整型宏定义, 对 #ifdef 版本依赖有用.
EXPORT_SYMBOL (symbol);
EXPORT_SYMBOL_GPL (symbol);
宏定义, 用来输出一个符号给内核. 第 2 种形式输出没有版本信息, 第 3 种限制输出给 GPL 许可的模块.
MODULE_AUTHOR(author);
MODULE_DESCRIPTION(description);
MODULE_VERSION(version_string);
MODULE_DEVICE_TABLE(table_info);
MODULE_ALIAS(alternate_name);
放置文档在目标文件的模块中.
module_init(init_function);
module_exit(exit_function);
宏定义, 声明一个模块的初始化和清理函数.
#include <linux/moduleparam.h>
module_param(variable, type, perm);
宏定义, 创建模块参数, 可以被用户在模块加载时调整( 或者在启动时间, 对于内嵌代码). 类型可以是 bool, charp, int, invbool, short, ushort, uint, ulong, 或者 intarray.
#include <linux/kernel.h>
int printk(const char * fmt, ...);
内核代码的 printf 类似物.
- Linux设备驱动3快速参考汇总--建立和运行模块
- Linux设备驱动之《构造和运行模块》
- 《Linux设备驱动》读书笔记:创建和运行模块(一)
- linux设备驱动学习(2) 构造和运行模块
- linux设备驱动之构造和运行模块
- linux设备驱动第二篇:构造和运行模块
- linux设备驱动第二篇:构造和运行模块
- linux 驱动模块参考
- Linux设备驱动第三版快速参考摘录
- Linux设备驱动程序代码 第2章 建立和运行模块
- 《LINUX设备驱动程序》第2章(建立和运行模块)学习笔记
- linux设备驱动模块引用和依赖
- linux设备驱动编程-初探(2)--在内核中构造和运行模块
- Linux设备驱动之模块
- Linux 平台设备驱动平台设备汇总
- 2建立和运行模块
- linux设备驱动程序第二版 编写和运行模块
- linux 设备驱动程序 (2) —— 构造和运行模块
- 沁园春
- 软件项目管理心得
- 诊断 Java 代码: 提高 Java 代码的性能 (尾递归转换能加快应用程序的速度,但不是所有的 JVM 都会做这种转换)
- The mini_fo filesystem
- 有点郁闷了
- Linux设备驱动3快速参考汇总--建立和运行模块
- css—border, margin, padding-浏览器
- 软件开发过程感触(1)
- C#建立或删除共享
- 还是U盘
- document.getElementById 在UserControl中的使用
- What is mini_for? mini_fo文件系统
- http://blog.chinaunix.net/u2/64540/article_82566.html
- Symbian C++的3D游戏引擎的分析(附源码下载)