索引

符号

/etc/conf.modules, 模块如何进入内核?
/etc/modules.conf, 模块如何进入内核?
/proc 文件系统, /proc 文件系统
/proc/interrupts, 中断处理程序
/proc/kallsyms, 模块可用的函数, 命名空间, 常见陷阱
/proc/meminfo, /proc 文件系统
/proc/modules, 模块如何进入内核?, /proc 文件系统
2.6 更改, 2.4 和 2.6 之间的更改
_IO, 与设备文件对话(写入和 IOCTL)
_IOR, 与设备文件对话(写入和 IOCTL)
_IOW, 与设备文件对话(写入和 IOCTL)
_IOWR, 与设备文件对话(写入和 IOCTL)
__exit, Hello World(第 3 部分):__init 和 __exit 宏
__init, Hello World(第 3 部分):__init 和 __exit 宏
__initdata, Hello World(第 3 部分):__init 和 __exit 宏
__initfunction(), Hello World(第 3 部分):__init 和 __exit 宏

B

阻塞进程, 阻塞进程
阻塞,如何避免, 阻塞进程
底半部, 中断处理程序
忙, 阻塞进程

C

食肉动物
大, 常见陷阱
cleanup_module(), 你好,世界(第 1 部分):最简单的模块
代码空间, 代码空间
咖啡, 主设备号和次设备号
copy_from_user, 读取和写入 /proc 文件
copy_to_user, 读取和写入 /proc 文件
CPU
多核, 对称多处理
crontab, 调度任务
ctrl-c, 阻塞进程
当前任务, 替换 printk

D

DEFAULT_MESSAGE_LOGLEVEL, 介绍 printk()
定义 ioctl, 与设备文件对话(写入和 IOCTL)
设备文件
字符, 字符设备驱动程序
设备文件
输入到, 与设备文件对话(写入和 IOCTL)
写入到, 与设备文件对话(写入和 IOCTL)

E

EAGAIN, 阻塞进程
EINTR, 阻塞进程
ENTRY(系统调用), 系统调用
entry.S, 系统调用

F

文件, file 结构
文件系统
/proc, /proc 文件系统
注册, 使用标准文件系统管理 /proc 文件
文件系统注册, 使用标准文件系统管理 /proc 文件
file_operations, file_operations 结构
file_operations 结构, 使用标准文件系统管理 /proc 文件

G

get_user, 读取和写入 /proc 文件

H

处理程序
中断, 中断处理程序
内务处理, 调度任务
Hurd, 代码空间

I

inb, Intel 架构上的键盘
init_module(), 你好,世界(第 1 部分):最简单的模块
inode, file 结构, /proc 文件系统
inode_operations 结构, 使用标准文件系统管理 /proc 文件
insmod, 编译内核模块, 系统调用
Intel 架构
键盘, Intel 架构上的键盘
中断 0x80, 系统调用
中断处理程序, 中断处理程序
interruptible_sleep_on, 阻塞进程
中断
禁用, 常见陷阱
ioctl, 与设备文件对话(写入和 IOCTL)
定义, 与设备文件对话(写入和 IOCTL)
官方分配, 与设备文件对话(写入和 IOCTL)

K

内核
版本, 2.4 和 2.6 之间的更改
内核版本, 为多个内核版本编写模块
kerneld, 模块如何进入内核?
KERNEL_VERSION, 为多个内核版本编写模块
键盘, Intel 架构上的键盘
键盘 LED 指示灯
闪烁, 闪烁键盘 LED 指示灯
kmod, 模块如何进入内核?

L

标准, 常见陷阱
库函数, 模块可用的函数
LINUX_VERSION_CODE, 为多个内核版本编写模块

M

主设备号, 主设备号和次设备号
动态分配, 注册设备
内存段, 读取和写入 /proc 文件
微内核, 代码空间
次设备号, 主设备号和次设备号
mknod, 主设备号和次设备号
调制解调器, 与设备文件对话(写入和 IOCTL)
MODULE_AUTHOR(), Hello World(第 4 部分):许可和模块文档
module_cleanup, 调度任务
MODULE_DESCRIPTION(), Hello World(第 4 部分):许可和模块文档
module_exit, Hello World(第 2 部分)
module_init, Hello World(第 2 部分)
module_interruptible_sleep_on, 阻塞进程
MODULE_LICENSE(), Hello World(第 4 部分):许可和模块文档
module_permissions, 使用标准文件系统管理 /proc 文件
module_sleep_on, 阻塞进程
MODULE_SUPPORTED_DEVICE(), Hello World(第 4 部分):许可和模块文档
module_wake_up, 阻塞进程
MOD_DEC_USE_COUNT, 注销设备
MOD_INC_USE_COUNT, 注销设备
MOD_IN_USE, 注销设备
单内核, 代码空间
多处理, 对称多处理
多任务, 阻塞进程
多任务, 阻塞进程

N

命名空间污染, 命名空间
Neutrino, 代码空间
非阻塞, 阻塞进程

O

官方 ioctl 分配, 与设备文件对话(写入和 IOCTL)
O_NONBLOCK, 阻塞进程

P

权限, 使用标准文件系统管理 /proc 文件
指针
当前, 使用标准文件系统管理 /proc 文件
printk
替换, 替换 printk
printk(), 介绍 printk()
proc 文件
kallsyms, 常见陷阱
进程
阻塞, 阻塞进程
杀死, 阻塞进程
唤醒, 阻塞进程
处理
多核, 对称多处理
proc_register, /proc 文件系统
proc_register_dynamic, /proc 文件系统
使进程进入睡眠, 阻塞进程
put_user, 读取和写入 /proc 文件

Q

queue_delayed_work, 调度任务
queue_work, 中断处理程序

R

读取
在内核中, 读取和写入 /proc 文件
引用计数, 调度任务
退款政策, 常见陷阱
register_chrdev, 注册设备
request_irq(), 中断处理程序
rmmod, 系统调用, 调度任务
防止, 注销设备

S

SA_INTERRUPT, 中断处理程序
SA_SHIRQ, 中断处理程序
调度器, 阻塞进程
调度任务, 调度任务
内存, 读取和写入 /proc 文件
seq_file, 使用 seq_file 管理 /proc 文件
串口, 与设备文件对话(写入和 IOCTL)
关闭, 系统调用
SIGINT, 阻塞进程
信号, 阻塞进程
睡眠
使进程进入, 阻塞进程
sleep_on, 阻塞进程
SMP, 对称多处理
源文件
chardev.c, 与设备文件对话(写入和 IOCTL)
chardev.h, 与设备文件对话(写入和 IOCTL)
hello-1.c, 你好,世界(第 1 部分):最简单的模块
hello-2.c, Hello World(第 2 部分)
hello-3.c, Hello World(第 3 部分):__init 和 __exit 宏
hello-4.c, Hello World(第 4 部分):许可和模块文档
hello-5.c, 将命令行参数传递给模块
intrpt.c, Intel 架构上的键盘
ioctl.c, 与设备文件对话(写入和 IOCTL)
print_string.c, 替换 printk
sched.c, 调度任务
sleep.c, 阻塞进程
start.c, 跨越多个文件的模块
stop.c, 跨越多个文件的模块
syscall.c, 系统调用
源文件
多个, 跨越多个文件的模块, 为预编译内核构建模块
标准库, 常见陷阱
strace, 模块可用的函数, 系统调用
结构体
tty, 替换 printk
struct file_operations, 使用标准文件系统管理 /proc 文件
struct inode_operations, 使用标准文件系统管理 /proc 文件
符号表, 命名空间
对称多处理, 对称多处理
同步, 系统调用
系统调用, 模块可用的函数, 系统调用
打开, 系统调用
系统调用, 系统调用
sys_call_table, 系统调用
sys_open, 系统调用

T

任务, 调度任务
当前, 替换 printk
任务
调度, 调度任务
TASK_INTERRUPTIBLE, 阻塞进程
try_module_get, 系统调用
tty_structure, 替换 printk

W

唤醒进程, 阻塞进程
workqueue_struct, 调度任务
写入
在内核中, 读取和写入 /proc 文件