📄 ch02s10.html
字号:
<html xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>2.10. 快速参考</title><link rel="stylesheet" href="docbook.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.69.0"><link rel="start" href="index.html" title="Linux 设备驱动 Edition 3"><link rel="up" href="ch02.html" title="第 2 章 建立和运行模块"><link rel="prev" href="ch02s09.html" title="2.9. 在用户空间做"><link rel="next" href="ch03.html" title="第 3 章 字符驱动"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.10. 快速参考</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s09.html">上一页</a> </td><th width="60%" align="center">第 2 章 建立和运行模块</th><td width="20%" align="right"> <a accesskey="n" href="ch03.html">下一页</a></td></tr></table><hr></div><div class="sect1" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="QuickReference.sect1"></a>2.10. 快速参考</h2></div></div></div><p> 本节总结了我们在本章接触到的内核函数, 变量, 宏定义, 和 /proc 文件. 它的用意是作为一个参考. 每一项列都在相关头文件的后面, 如果有. 从这里开始, 在几乎每章的结尾会有类似一节, 总结一章中介绍的新符号. 本节中的项通常以在本章中出现的顺序排列: </p><div class="variablelist"><dl><dt><span class="term"><span>insmod</span></span></dt><dd></dd><dt><span class="term"><span>modprobe</span></span></dt><dd></dd><dt><span class="term"><span>rmmod </span></span></dt><dd><p>用户空间工具, 加载模块到运行中的内核以及去除它们.</p></dd><dt><span class="term"><span>#include <linux/init.h></span></span></dt><dd></dd><dt><span class="term"><span>module_init(init_function);</span></span></dt><dd></dd><dt><span class="term"><span>module_exit(cleanup_function);</span></span></dt><dd><p>指定模块的初始化和清理函数的宏定义.</p></dd><dt><span class="term"><span>__init</span></span></dt><dd></dd><dt><span class="term"><span>__initdata</span></span></dt><dd></dd><dt><span class="term"><span>__exit</span></span></dt><dd></dd><dt><span class="term"><span>__exitdata </span></span></dt><dd><p>函数( __init 和 __exit )和数据 (__initdata 和 __exitdata)的标记, 只用在模块初始化或者清理时间. 为初始化所标识的项可能会在初始化完成后丢弃; 退出的项可能被丢弃如果内核没有配置模块卸载. 这些标记通过使相关的目标在可执行文件的特定的 ELF 节里被替换来工作.</p></dd><dt><span class="term"><span>#include <linux/sched.h></span></span></dt><dd><p>最重要的头文件中的一个. 这个文件包含很多驱动使用的内核 API 的定义, 包括睡眠函数和许多变量声明.</p></dd><dt><span class="term"><span>struct task_struct *current;</span></span></dt><dd><p>当前进程.</p></dd><dt><span class="term"><span>current->pid</span></span></dt><dd></dd><dt><span class="term"><span>current->comm </span></span></dt><dd><p>进程 ID 和 当前进程的命令名.</p></dd><dt><span class="term"><span>obj-m </span></span></dt><dd><p>一个 makefile 符号, 内核建立系统用来决定当前目录下的哪个模块应当被建立.</p></dd><dt><span class="term"><span>/sys/module </span></span></dt><dd></dd><dt><span class="term"><span>/proc/modules </span></span></dt><dd><p>/sys/module 是一个 sysfs 目录层次, 包含当前加载模块的信息. /proc/moudles 是旧式的, 那种信息的单个文件版本. 其中的条目包含了模块名, 每个模块占用的内存数量, 以及使用计数. 另外的字串追加到每行的末尾来指定标志, 对这个模块当前是活动的.</p></dd><dt><span class="term"><span>vermagic.o </span></span></dt><dd><p>来自内核源码目录的目标文件, 描述一个模块为之建立的环境.</p></dd><dt><span class="term"><span>#include <linux/module.h></span></span></dt><dd><p>必需的头文件. 它必须在一个模块源码中包含.</p></dd><dt><span class="term"><span>#include <linux/version.h></span></span></dt><dd><p>头文件, 包含在建立的内核版本信息.</p></dd><dt><span class="term"><span>LINUX_VERSION_CODE</span></span></dt><dd><p>整型宏定义, 对 #ifdef 版本依赖有用.</p></dd><dt><span class="term"><span>EXPORT_SYMBOL (symbol);</span></span></dt><dd></dd><dt><span class="term"><span>EXPORT_SYMBOL_GPL (symbol);</span></span></dt><dd><p>宏定义, 用来输出一个符号给内核. 第 2 种形式输出没有版本信息, 第 3 种限制输出给 GPL 许可的模块.</p></dd><dt><span class="term"><span>MODULE_AUTHOR(author);</span></span></dt><dd></dd><dt><span class="term"><span>MODULE_DESCRIPTION(description);</span></span></dt><dd></dd><dt><span class="term"><span>MODULE_VERSION(version_string);</span></span></dt><dd></dd><dt><span class="term"><span>MODULE_DEVICE_TABLE(table_info);</span></span></dt><dd></dd><dt><span class="term"><span>MODULE_ALIAS(alternate_name);</span></span></dt><dd><p>放置文档在目标文件的模块中.</p></dd><dt><span class="term"><span>module_init(init_function);</span></span></dt><dd></dd><dt><span class="term"><span>module_exit(exit_function);</span></span></dt><dd><p>宏定义, 声明一个模块的初始化和清理函数.</p></dd><dt><span class="term"><span>#include <linux/moduleparam.h></span></span></dt><dd></dd><dt><span class="term"><span>module_param(variable, type, perm);</span></span></dt><dd><p>宏定义, 创建模块参数, 可以被用户在模块加载时调整( 或者在启动时间, 对于内嵌代码). 类型可以是 bool, charp, int, invbool, short, ushort, uint, ulong, 或者 intarray.</p></dd><dt><span class="term"><span>#include <linux/kernel.h></span></span></dt><dd></dd><dt><span class="term"><span>int printk(const char * fmt, ...);</span></span></dt><dd><p>内核代码的 printf 类似物.</p></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s09.html">上一页</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">上一级</a></td><td width="40%" align="right"> <a accesskey="n" href="ch03.html">下一页</a></td></tr><tr><td width="40%" align="left" valign="top">2.9. 在用户空间做 </td><td width="20%" align="center"><a accesskey="h" href="index.html">起始页</a></td><td width="40%" align="right" valign="top"> 第 3 章 字符驱动</td></tr></table></div></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -