Appendix B. Where To Go From Here
B.1. 为什么这样写?
我其实可以给这本书再加入几章,例如如何为实现新的文件系统加上一章,或是添加一个新的协议栈(如果有这样的必要的话, 想找到Linux不支持的网络协议已经是非常的困难的了)。我还可以解释一下我们尚未接触到的内核实现机制,像系统的引导自举, 或磁盘存储。
但是,我决定否。我写本书的目的是提供基本的,入门的对神秘的内核模块编程的认识和这方面的常用技巧。 对于那些非常热衷与内核编程的人,我推荐Juan-Mariano de Goyeneche的 内核资源列表 。 同样,就同Linus本人说的那样,学习内核最好的方法是自己阅读内核源代码。
如果你对更多的短小的示例内核模块感兴趣,我向你推荐 Phrack magazine 这本杂志。 即使你不关心安全问题,作为一个程序员你还是应该时时考虑这个问题的。这些内核模块代码都很短,不需要费多大劲就能读懂。
我希望我满足了你希望成为一个更优秀的程序员的要求,至少在学习技术的过程中体会到了乐趣。 如果你真的写了一些非常有用的模块,我希望你使用GPL许可证发布你的模块,这样我也就可以使用它们了。
Index
Symbols
- /etc/conf.modules, 内核模块是如何被调入内核工作的?
- /etc/modules.conf, 内核模块是如何被调入内核工作的?
- /proc filesystem, 关于 /proc 文件系统
- /proc/interrupts, Interrupt Handlers
- /proc/kallsyms, 模块可调用的函数, 命名空间, 注意
- /proc/meminfo, 关于 /proc 文件系统
- /proc/modules, 内核模块是如何被调入内核工作的?, 关于 /proc 文件系统
- 2.2 changes, 从2.0到2.2的变化
- _IO, 与设备文件对话 (writes and IOCTLs)
- _IOR, 与设备文件对话 (writes and IOCTLs)
- _IOW, 与设备文件对话 (writes and IOCTLs)
- _IOWR, 与设备文件对话 (writes and IOCTLs)
- _NSIG_WORDS, 从2.0到2.2的变化
- __exit, Hello World (part 3): 关于__init和__exit宏
- __init, Hello World (part 3): 关于__init和__exit宏
- __initdata, Hello World (part 3): 关于__init和__exit宏
- __initfunction(), Hello World (part 3): 关于__init和__exit宏
- __NO_VERSION__, 由多个文件构成的内核模块
- 源代码
-
- hello-3.c, Hello World (part 3): 关于__init和__exit宏
B
- BH_IMMEDIATE, Interrupt Handlers
- blocking processes, 阻塞进程
- blocking, how to avoid, Enter Sandman
- bottom half, Interrupt Handlers
- busy, Enter Sandman
C
- carnivore
-
- large, 注意
- cleanup_module(), Hello, World (part 1): 最简单的内核模块, 介绍printk()
- close, 从2.0到2.2的变化
- code space, 代码空间
- coffee, Major and Minor Numbers
- CPU
-
- multiple, 对称多线程处理
- crontab, 任务调度
- ctrl-c, Enter Sandman
- current task, 替换printk
D
- defining ioctls, 与设备文件对话 (writes and IOCTLs)
- device file
-
- character, 字符设备文件
- device files
-
- input to, 与设备文件对话 (writes and IOCTLs)
- write to, 与设备文件对话 (writes and IOCTLs)
E
- EAGAIN, Enter Sandman
- EINTR, Enter Sandman
- elf_i386, 由多个文件构成的内核模块
- ENTRY(system call), 系统调用
- entry.S, 系统调用
F
- file, 关于file结构体
- filesystem
-
- /proc, 关于 /proc 文件系统
- registration, 使用 /proc 作为输入
- filesystem registration, 使用 /proc 作为输入
- file_operations, 关于file_operations结构体
- file_operations structure, 使用 /proc 作为输入
- flush, 从2.0到2.2的变化
I
- inb, Intel架构中的键盘
- init_module(), Hello, World (part 1): 最简单的内核模块, 介绍printk()
- inode, 关于file结构体, 关于 /proc 文件系统
- inode_operations structure, 使用 /proc 作为输入
- input
-
- using /proc for, 使用 /proc 作为输入
- insmod, 编译内核模块, 系统调用
- Intel architecture
-
- keyboard, Intel架构中的键盘
- interrupt 0x80, 系统调用
- interrupt handlers, Interrupt Handlers
- interruptible_sleep_on, Enter Sandman
- interrupts, 从2.0到2.2的变化
-
- disabling, 注意
- ioctl, 与设备文件对话 (writes and IOCTLs)
-
- defining, 与设备文件对话 (writes and IOCTLs)
- official assignment, 与设备文件对话 (writes and IOCTLs)
- irqs, 从2.0到2.2的变化
K
- kernel
-
- versions, 从2.0到2.2的变化
- kernel versions, 为多个版本的内核编写内核模块
- kerneld, 内核模块是如何被调入内核工作的?
- kernel\_version, 由多个文件构成的内核模块
- KERNEL_VERSION, 为多个版本的内核编写内核模块
- keyboard, Intel架构中的键盘
- keyboard LEDs
-
- flashing, 让你的键盘指示灯闪起来
- kmod, 内核模块是如何被调入内核工作的?
L
- ld, 由多个文件构成的内核模块
- libraries
-
- standard, 注意
- library function, 模块可调用的函数
- LINUX_VERSION_CODE, 为多个版本的内核编写内核模块
M
- major number, Major and Minor Numbers
-
- dynamic allocation, 注册一个设备
- mark_bh, Interrupt Handlers
- memory segments, 使用 /proc 作为输入
- microkernel, 代码空间
- minor number, Major and Minor Numbers
- mknod, Major and Minor Numbers
- modem, 与设备文件对话 (writes and IOCTLs)
- module
-
- parameters, 从2.0到2.2的变化
- module parameters, 从2.0到2.2的变化
- module.h, 由多个文件构成的内核模块
- modules.conf
-
- alias, 内核模块是如何被调入内核工作的?
- comment, 内核模块是如何被调入内核工作的?
- keep, 内核模块是如何被调入内核工作的?
- options, 内核模块是如何被调入内核工作的?
- path, 内核模块是如何被调入内核工作的?
- MODULE_AUTHOR(), Hello World (part 4): 内核模块证书和内核模块文档说明
- module_cleanup, 任务调度
- MODULE_DESCRIPTION(), Hello World (part 4): 内核模块证书和内核模块文档说明
- module_exit, Hello World (part 2)
- module_init, Hello World (part 2)
- module_interruptible_sleep_on, Enter Sandman
- MODULE_LICENSE(), Hello World (part 4): 内核模块证书和内核模块文档说明
- MODULE_PARM, 从2.0到2.2的变化
- module_permissions, 使用 /proc 作为输入
- module_sleep_on, Enter Sandman, 任务调度
- MODULE_SUPPORTED_DEVICE(), Hello World (part 4): 内核模块证书和内核模块文档说明
- module_wake_up, Enter Sandman
- MOD_DEC_USE_COUNT, 注销一个设备
- MOD_INC_USE_COUNT, 注销一个设备
- MOD_IN_USE, 注销一个设备
- monolithic kernel, 代码空间
- multi-processing, 对称多线程处理
- multi-tasking, Enter Sandman
- multitasking, Enter Sandman


加载中…