- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux 内核编程
著者:Ori Pomerantz
翻译:徐辉
2000 年8 月19 日
译者前言
这是我的第一次尝试,在此之前我还没有接触过Linux ,所以翻
译得很粗糙,有的地方我自己也不明白,只好照着翻下来。而且急急
匆匆,毛毛草草,一定有许多错误或不当之处。我一向就是这么毛草
的啦,总是给我的组织丢脸。J所以如果你发现了有什么错误或者解
释不清的地方,希望能够指正,敬请把您的金玉之言发到我的信箱里。
本人此举旨在结识天下Linux 英雄。本人徐辉 (号:水光月影,
真命天子)现在北大方正研究院读研,主要研究方向是信息安全、数
据加密和Linux 的安全性。由于我们的工作在方正尚属开创,所以希
望能够结识最多的Linux、网络安全方面的高手。如果您有什么项目
需要合作,或者有什么好的提议,或者有关于安全方面的需求,或者
有比较好的资料,敬请与我们联系。本人将感激不尽。J //bow
本书英文下载版可在/ldp 找到。印刷版请见
书后的说明。
最后必须声明:本书翻译完全是个人行为,我只代表我个人。本
资料为内部交流使用,未经作者及译者许可,任何单位和个人不得将
本资料用作商业用途。如经发现,本人有权力追究法律责任。
译者email:xu_hui@
2000 年8 月19 日 于北大燕园
一
目 录
1.HELLO, WORLD三
EXHELLO.C 三
1.1 内核模块的编译文件 四
1.2 多文件内核模块 五
2 .字符设备文件八
2 .1 多内核版本源文件十六
3 ./PROC 文件系统十七
4 .使用/PROC 进行输入二十二
5 .和设备文件对话 (写和IOCTLS )三十
6 .启动参数 四十四
7 .系统调用 四十七
8 .阻塞进程五十三
9 .替换PRINTK’S 六十三
10.调度任务六十六
11.中断处理程序七十一
11.1 INTEL 结构上的键盘七十一
12.对称多处理七十五
常见的错误七十六
2.0 和2.2 版本的区别七十六
除此以外七十六
其他七十八
GOODS AND SERVICES七十八
GNU GENERAL PUBLIC LICENSE 七十八
注八十四
二
1.Hello, world
当第一个穴居的原始人程序员在墙上凿出第一个“洞穴计算机”的程序时,那是一个打
印出用羚羊角上的图案表示的“Hello world ”的程序。罗马编程教科书上是以“Salut, Mundi”
的程序开始的。我不知道如果人们打破这个传统后会有什么后果,但我认为还是不要去发现
这个后果比较安全。
一个内核模块至少包括两个函数:init_module ,在这个模块插入内核时调用;
cleanup_module ,在模块被移出时调用。典型情况下,init_module 为内核中的某些东西注册
一个句柄,或者把内核中的程序提换成它自己的代码(通常是进行一些工作以后再调用原来
工作的代码)。Clean_module 模块要求撤销init_module 进行的所有处理工作,使得模块可以
被安全的卸载。
Exhello.c
/* hello.c
* Copyright (C) 1998 by Ori Pomerantz
*
* Hello, world - the kernel module version.
*/
/* The necessary header files */
/* Standard in kernel modules */
#include linux/kernel.h /* Were doing kernel work */
#include linux/module.h
文档评论(0)