预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共83页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

PAGE八十二 Linux内核编程 目录 TOC\o"1-2"\h\zHYPERLINK\l"_Toc491281294"1.Hello,world PAGEREF_Toc491281294\h3 HYPERLINK\l"_Toc491281295"Exhello.c PAGEREF_Toc491281295\h3 HYPERLINK\l"_Toc491281296"1.1内核模块的编译文件 PAGEREF_Toc491281296\h4 HYPERLINK\l"_Toc491281297"1.2多文件内核模块 PAGEREF_Toc491281297\h5 HYPERLINK\l"_Toc491281298"2.字符设备文件 PAGEREF_Toc491281298\h8 HYPERLINK\l"_Toc491281299"2.1多内核版本源文件 PAGEREF_Toc491281299\h16 HYPERLINK\l"_Toc491281300"3./proc文件系统 PAGEREF_Toc491281300\h17 HYPERLINK\l"_Toc491281301"4.使用/proc进行输入 PAGEREF_Toc491281301\h22 HYPERLINK\l"_Toc491281302"5.和设备文件对话(写和IOCTLS) PAGEREF_Toc491281302\h30 HYPERLINK\l"_Toc491281303"6.启动参数 PAGEREF_Toc491281303\h44 HYPERLINK\l"_Toc491281304"7.系统调用 PAGEREF_Toc491281304\h47 HYPERLINK\l"_Toc491281305"8.阻塞进程 PAGEREF_Toc491281305\h53 HYPERLINK\l"_Toc491281306"9.替换printk’s PAGEREF_Toc491281306\h63 HYPERLINK\l"_Toc491281307"10.调度任务 PAGEREF_Toc491281307\h66 HYPERLINK\l"_Toc491281308"11.中断处理程序 PAGEREF_Toc491281308\h71 HYPERLINK\l"_Toc491281309"11.1Intel结构上的键盘 PAGEREF_Toc491281309\h72 HYPERLINK\l"_Toc491281310"12.对称多处理 PAGEREF_Toc491281310\h75 HYPERLINK\l"_Toc491281311"常见的错误 PAGEREF_Toc491281311\h76 HYPERLINK\l"_Toc491281312"2.0和2.2版本的区别 PAGEREF_Toc491281312\h76 HYPERLINK\l"_Toc491281313"除此以外 PAGEREF_Toc491281313\h77 HYPERLINK\l"_Toc491281314"其他 PAGEREF_Toc491281314\h78 HYPERLINK\l"_Toc491281315"GoodsandServices PAGEREF_Toc491281315\h78 HYPERLINK\l"_Toc491281316"GNUGENERALPUBLICLICENSE PAGEREF_Toc491281316\h78 HYPERLINK\l"_Toc491281317"注 PAGEREF_Toc491281317\h84  1.Hello,world 当第一个穴居的原始人程序员在墙上凿出第一个“洞穴计算机”的程序时,那是一个打印出用羚羊角上的图案表示的“Helloworld”的程序。罗马编程教科书上是以“Salut,Mundi”的程序开始的。我不知道如果人们打破这个传统后会有什么后果,但我认为还是不要去发现这个后果比较安全。 一个内核模块至少包括两个函数:init_module,在这个模块插入内核时调用;cleanup_module,在模块被移出时调用。典型情况下,init_module为内核中的某些东西注册一个句柄,或者把内核中的程序提换成它自己的代码(通常是进行一些工作以后再调用原来工作的代码)。Clean_module模块要求撤销init_module进行的所有