2.0 和2.2版之间的变化
我并不彻底的知道内核以写出所有的变化。在范例转化的过程中(或者适应Emmanuel Papirakis的变化)我碰到了下面的差异。我在这儿列出所有的我知道的以帮助模块程序员,非凡是从本书的上一版中学习的那些人和使用和我使用的技术大多相似的人,转化到新的版本。
一个为希望转化为2.2版的人有用的附加的资源在 http://www.atnf.csiro.au/~ rgooch/linux/docs/porting-to-2.2.html.
1.asm/uaccess.h 假如你需要 put_user 或者 get_user 你需要 #include 它。
2.get_user 在 2.2 版中, get_user 接收指向用户内存段的指针和内核内存段的变量以填充信息。原因是假如我们读的变量是两个或四个字节长, get_user现在可以一次读完。
3.file_operations 这个结构在 open 和 close 函数间有刷新函数。
4.file_operations中的关闭函数 在 2.2版中,关闭函数返回整数,因此它答应失败。
5.file_operations中的读写函数 这些函数的头文件改变了。它们现在返回 ssize_t 而不是整数,而且它们的参数列表也不同。节点不再是参数而是文件偏移量。
6.proc_register_dynamic 这个函数不再存在。你可以调用普通的 proc_register 函数并将结构的节点成员设置为0。
7.Signals 任务结构中的信号不再是32位整数而是 _NSIG_WORDS 整数数组。
8.queue_task_irq 即使你想从中断句柄中让一个任务按进度表发生,你应该使用 queue_task,而不是queue_task_irq.
9.模块参数 你不能只将模块参数声明为全局变量。在 2.2 版中你必须也使用MODULE_PARM 声明它的类型。这是一个巨大的改进,例如它答应模块接收以数字开头的字符串参数而不会混淆。
10.对称多处理 内核不再局限在一个巨大的旋转锁里面,这意味着内核模块必须知道对称多处理。
从这儿到哪儿?
我可以轻易的将更多章节的内容加入这本书。我可以加入关于创建一个新文件系统的章节或者加入新的协议栈(好象这儿需要它--你不得不发掘一个不被Linux支持的协议栈)。我也可以加入我们还未接触的内核机制的解释,诸如自举或磁盘接口。
然而,我没有选择这样做。我写这本书的目的是为神秘的内核模块编程提供基本的开端和为此目的的通用技术。对于真正的对内核编程感爱好的人,我推荐位于 http://jungla.dit.upm.es/~ jmseyas/linux/kernel/hackers-docs.html的内核源文件列表。就像 Linus 所说的,学习内核的最好的办法是自己阅读源代码。
假如你对更多的短的内核模块范例感爱好,我推荐Phrack 杂志。即使你对安全不感爱好(作为程序员你应该感爱好),那儿有很多很好的范例内核模块让你知道在内核中可以做什么,它们足够短,以至于不需要太多的努力就可以理解。
我希望我已经在你寻求成为更好的程序员上有帮助或者至少通过技术提供了乐趣。而且,假如你写了有用的内核模块,我希望你在 GNU通用公共许可协议下发布它以便我也可以使用他们。
商品和服务
我希望没有人注重到这儿的不知羞耻的宣传。它们是所有可能对开始Linux内核模块编程人员有用的事情。
得到这本书的印刷版
Coriolis 团体预备在99年的夏天将这本书印刷出来。假如现在已经是夏天,而且你想得到这本书的印刷版你可以向你的印刷商购买它。
表示你的感谢
这是一个自由文档。对于除GNU 公共许可协议规定条款以外的事情你没有责任。然而,假如你因为得到这本书而想为了作为回报而做什么的话,这有一些你可以做的。
给我发明信片
Ori Pomerantz
Apt. #1032
2355 N Hwy 360
Grand Prairie
TX 75050
USA
假如你想收到感谢回函,请写明你的e-mail 地址。
向自由软件团体捐献财物或更好的--时间。在 GNU公共许可协议下编写程序或文档并发布。教其他人如何使用自由软件,例如 Linux 或 Perl。
向人们解释自私是和居住在一个社会或帮助别人是矛盾的。我喜欢写这个文档并且我相信发布它对我的未来是有帮助的。同时我写了一本书去帮助你们(假如你得到的话)。记住,让别人兴奋通常比让别人不兴奋对你自己更有用,让人们上路 比让人们低能更好。
兴奋。假如我碰到你,它将使那次相遇更愉快,也能使你对我更有用。 ;-)。
关于这个文档 ...
Linux 内核模块编程指南
这个文档是使用 LaTeX2HTML 翻译器生成的 (98.1 发布版February 19th, 1998)
Copyright ©1993, 1994, 1995, 1996, 1997, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
中文版 Copyright ©2001 cherami
命令行参数是:
latex2html -dir html mpg.tex.
格式转化是从 1999-05-19开始的。
中文的翻译工作是从2001-2-5开始的。
原作者:cherami
来源:yesky
视频教程列表
文章教程搜索
C语言程序设计推荐教程
C语言程序设计热门教程
|