没有合适的资源?快使用搜索试试~ 我知道了~
首页The_Linux_Kernel_Module_Programming_Guide_2.6中文版
The_Linux_Kernel_Module_Programming_Guide_2.6中文版 《Linux 内核驱动模块编程指南》最初是由Ori Pomerantz为2.2版本的内核编写的 ,后来,Ori将文档维护的任务交给了Peter Jay Salzman,Peter完成了2.4内核版本文档 的编写,毕竟Linux内核驱动模块是一个更新很快的内容。现在,Peter也无法腾出足够的 时间来完成2.6内核版本文档的编写,目前该2.6内核版本的文档由合作者Michael Burian 完成
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/4890802/bg1.jpg)
!"!#$%&'
!!(!$!#$$)#*
+#,,-%$##
.((#,(##(#,,
#%&#!#%!)%#$*%)
)*)+!)$%/##
$#,
#)!!#%$#%&$#
#*+!!%+#!
!!#+##$$)#,0
#*!!#%#%&$$$
/,1###2!$$!
$#%&!*#,
3++)&#!##$#!#%!!
$)#*!#
,0$+%!)#%&*#&
!#!+%$+##,#&
+##!!#+%!!*
45!,6,#))$$!#!
+!##+##,
0$%#!#%#%&*!#*#*
!(!#!%!
37839,%#)#)##$
$#$)!3,0$+2###*#
!!##%+,
:)!
,作者声明
,版本和注意
;,感谢
![](https://csdnimg.cn/release/download_crawler_static/4890802/bg2.jpg)
<,译者注
,0!
,,什么是内核模块?
,,内核模块是如何被调入内核工作的?
,,,在开始前
,,,,内核模块和内核的版本问题
,,,,使用 =
带来的问题
,,,;,编译相关和内核版本相关的问题
,>?!
,,>*?!89. 最简单的内核模块
,,,介绍
&89
,,编译内核模块
,;,>?!89
,<,>?!8;9. 关于 @@
和 @@
宏
,A,>?!8<9. 内核模块证书和内核模块文档说明
,B,从命令行传递参数给内核模块
,C,由多个文件构成的内核模块
,D,为已编译的内核编译模块
;,#
;,,内核模块和用户程序的比较
;,,,内核模块是如何开始和结束的
;,,,模块可调用的函数
;,,;,用户空间和内核空间
;,,<,命名空间
;,,A,代码空间
;,,B,3+3+#
;,,B,,7!1%#
<,3+:#
<,,字符设备文件
<,,,关于
/@#
结构体
<,,,关于
/
结构体
<,,;,注册一个设备
<,,<,注销一个设备
<,,A,!+,
<,,B,为多个版本的内核编写内核模块
A,(:#
A,,关于 ( 文件系统
B,E#(:0
B,,使用 ( 作为输入
C,&3+:#
C,,与设备文件对话 8)#!0#9
D,##
D,,系统调用
F,&###
F,,阻塞进程
F,,,G!
![](https://csdnimg.cn/release/download_crawler_static/4890802/bg3.jpg)
,H&#
,,替换
&
,,让你的键盘指示灯闪起来
,!#&#
,,任务调度
,0>!#
,,0>!#
,,,0>!#
,,,0
架构中的键盘
;,##
;,,对称多线程处理
<,$#
<,,注意
I,#.,,
I,,从
,
到
,
的变化
I,,,从
,
到
,
的变化
,?":>
,,为什么这样写?
0!
J,J,
J,一个基本的
&/
J;,J,
J<,两个内核模块使用的
&/
JA,J;,
JB,J<,
JC,JA,
JD,#,
JF,#,
J,&/
<J,!+,
AJ,$#,
BJ,$#,
CJ,!+,
CJ,!+,
CJ;,,
DJ,##,
FJ,#,
J,@#,
J,&%!#,
J,#!,
J,,
![](https://csdnimg.cn/release/download_crawler_static/4890802/bg4.jpg)
作者声明
《内核驱动模块编程指南》最初是由 为 , 版本的内核编写的
,后来, 将文档维护的任务交给了 , 完成了 ,< 内核版
本文档 的编写,毕竟 内核驱动模块是一个更新很快的内容。现在, 也无
法腾出足够的 时间来完成 ,B 内核版本文档的编写,目前该 ,B 内核版本的文档由合
作者 完成。
版本和注意
内核模块是一块不断更新进步的内容,在 " 上总有关于是否保留还是历
史 版本的争论。 和我最终是决定为每个新的稳定版本内核建立一个新的文档
分支。也 就是说 ",<, 专注于 ,< 的内核,而 ",B, 将专注于 ,B 的
内核。我们不会在一篇文档中提供对旧版本内核的支持,对此感兴趣的读者应该寻找
相关版本的文档分支。
在文档中的绝大部分源代码和讨论都应该适用于其它平台,但我无法提供任何保证。
其中的一个例外就是 *中断处理该章的源代码和讨论就只适用于 DB 平台。
!感谢
感谢下列人士为此文档提供了他们宝贵的意见。他们是:0*3+!
*3*和 3K+。
"译者注
我,译者,名叫田竞,目前是一名在北京邮电大学就读的通信专业的大学生。自高中
起我就是 的爱好者并追随至今。我喜欢 给我带来的自由,我想大家也一
样。没有人不向往自由。
我学习内核模块编写时最初阅读的是 出版社的使用 , 版本的内核的书籍,但
如同我预料的一样,书中的许多事例由于内核代码的变化而无法使用。这让想亲自体
验内核模块的神秘的我非常苦恼。我在 文档计划在上海的镜像站
!,$, 上找到了这篇文档。
受原作者 的鼓励,基于上次完成的 ",< 的,内容有稍许的改变和扩充。应
该是目前最新的了。 翻译的方式有所改变,在基于 3 认可的 !%& 格式上翻译,
![](https://csdnimg.cn/release/download_crawler_static/4890802/bg5.jpg)
通过 !%& 转换为附件中的 文档。由于对 !%& 不是很熟悉,其
中的一些标题尚未翻译,而且可能破坏了原有的 ,导致 出现一些错误显示,
但总体来说很少。修改了很多 ,< 中的错别字。
学习并分享学习的过程是我翻译的最终目的。
#$
什么是内核模块?
现在,你是不是想编写内核模块。你应该懂得 语言,写过一些用户程序,那么现在
你将要见识一些真实的东西。在这里,你会看到一个野蛮的指针是如何毁掉你的文件
系统的,一次内核崩溃意味着重启动。
什么是内核模块?内核模块是一些可以让操作系统内核在需要时载入和执行的代码,
这同样意味着它可以在不需要时有操作系统卸载。它们扩展了操作系统内核的功能却
不需要重新启动系统。举例子来说,其中一种内核模块时设备驱动程序模块,它们用
来让操作系统正确识别,使用安装在系统上的硬件设备。如果没有内核模块,我们不
得不一次又一次重新编译生成单内核操作系统的内核镜像来加入新的功能。这还意味
着一个臃肿的内核。
内核模块是如何被调入内核工作的?
你可以通过执行 命令来查看内核已经加载了哪些内核模块*该命令通过读取(
(!# 文件的内容来获得所需信息。
这些内核模块是如何被调入内核的?当操作系统内核需要的扩展功能不存在时,内核
模块管理守护进程 &!LM执行 !% 去加载内核模块。两种类型的参数被传递
给 !%:
一个内核模块的名字像 #$! 或是 。
通用识别符像 char-major-10-30。
当传递给 modprobe 是通用识别符时,modprobe 首先在文件 /etc/modules.conf 查找该字符串。如果
它发现的一行别名像:
#J7JJ;#$!
它就明白通用识别符是指向内核模块 #$!,。
剩余63页未读,继续阅读
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/2c636fdbbfdb4728b27d56ff656ceb14_ssloveyaay.jpg!1)
ssloveyaay
- 粉丝: 0
- 资源: 10
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- Simulink在电机控制仿真中的应用
- 电子警察:功能、结构与抓拍原理详解
- TESSY 4.1 英文用户手册:Razorcat Development GmbH
- 5V12V直流稳压电源设计及其实现
- 江西建工四建来宾市消防支队高支模施工方案
- 三维建模教程:创建足球模型
- 宏福苑南二区公寓楼施工组织设计
- 福建外运集团信息化建设技术方案:网络与业务平台设计
- 打造理想工作环境:详尽的6S推行指南
- 阿里巴巴数据中台建设与实践
- 欧姆龙CP1H PLC操作手册:SYSMACCP系列详解
- 中国移动统一DPI设备技术规范:LTE数据合成服务器关键功能详解
- 高校竞赛信息管理系统:软件设计与体系详解
- 面向对象设计:准则、启发规则与系统分解
- 程序设计基础与算法解析
- 算法与程序设计基础概览
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)