| 作 者: | 陈学松 |
| 出版社: | 电子工业出版社 |
| 丛编项: | |
| 版权说明: | 本书为公共版权或经版权方授权,请支持正版图书 |
| 标 签: | LINUX |
| ISBN | 出版时间 | 包装 | 开本 | 页数 | 字数 |
|---|---|---|---|---|---|
| 未知 | 暂无 | 暂无 | 未知 | 0 | 暂无 |
目
录第1章
内核模块
内核模块的文件格式
EXPORT_SYMBOL的内核实现
模块的加载过程
81.3.1
sys_init_module(第一部分)
91.3.2
structmodule
91.3.3
load_module
131.3.4
sys_init_module(第二部分)
491.3.5
模块的卸载
本章小结
55第2章
字符设备驱动程序
应用程序与设备驱动程序互动实例
structfile_operations
字符设备的内核抽象
设备号的构成与分配
652.4.1
设备号的构成
652.4.2
设备号的分配与管理
字符设备的注册
设备文件节点的生成
字符设备文件的打开操作
本章小结
85第3章
分配内存
物理内存的管理
873.1.1
内存节点node
873.1.2
内存区域zone
883.1.3
内存页
页面分配器(pageallocator)
903.2.1
gfp_mask
913.2.2
alloc_pages
953.2.3
__get_free_pages
963.2.4
get_zeroed_page
973.2.5
__get_dma_pages
slab分配器(slaballocator)
983.3.1
管理slab的数据结构
993.3.2
kmalloc与kzalloc
1053.3.3
kmem_cache_create与kmem_cache_alloc
内存池(mempool)
虚拟内存的管理
1113.5.1
内核虚拟地址空间构成
1113.5.2
vmalloc与vfree
1123.5.3
ioremap
per-CPU变量
1153.6.1
静态per-CPU变量的声明与定义
1163.6.2
静态per-CPU变量的链接脚本
1173.6.3
setup_per_cpu_areas函数
1183.6.4
使用per-CPU变量
本章小结
125第4章
互斥与同步
并发的来源
local_irq_enable与local_irq_disable
自旋锁
1294.3.1
spin_lock
1304.3.2
spin_lock的变体
1334.3.3
单处理器上的spin_lock函数
1364.3.4
读取者与写入者自旋锁rwlock
信号量(semaphore)
1414.4.1
信号量的定义与初始化
1414.4.2
DOWN操作
1424.4.3
UP操作
1454.4.4
读取者与写入者信号量rwsem
互斥锁mutex
1484.5.1
互斥锁的定义与初始化
1484.5.2
互斥锁的DOWN操作
1494.5.3
互斥锁的UP操作
顺序锁seqlock
RCU
1554.7.1
读取者的RCU临界区
1564.7.2
写入者的RCU操作
1564.7.3
RCU使用的特点
原子变量与位操作
等待队列
1624.9.1
等待队列头wait_queue_head_t
1624.9.2
等待队列的节点
1634.9.3
等待队列的应用
完成接口completion
本章小结
168第5章
中断处理
中断的硬件框架
PIC与软件中断号
通用的中断处理函数
do_IRQ函数
structirq_chip
structirqaction
irq_set_handler
handle_irq_event
request_irq
中断处理的irq_thread机制
free_irq
SOFTIRQ
irq的自动探测
中断处理例程
中断共享
本章小结
202第6章
延迟操作
tasklet
2036.1.1
tasklet机制初始化
2046.1.2
提交一个tasklet2056.1.3
tasklet_action
2096.1.4
tasklet的其他操作
工作队列workqueue
2146.2.1
数据结构
2146.2.2
create_singlethread_workqueue和create_workqueue
2166.2.3
工人线程worker_thread
2196.2.4
destroy_workqueue
2216.2.5
提交工作节点queue_work
2246.2.6
内核创建的工作队列
本章小结
230第7章
设备文件的高级操作
ioctl文件操作
2317.1.1
ioctl的系统调用
2317.1.2
ioctl的命令编码
2357.1.3
copy_from_user和copy_to_user
字符设备的I/O模型
同步阻塞型I/O
2447.3.1
wait_event_interruptible
2447.3.2
wake_up_interruptible
同步非阻塞型I/O2507.5
异步阻塞型I/O
异步非阻塞型I/O2587.7
驱动程序的fsync例程2597.8
fasync例程
llseek例程
访问权能
本章小结
273第8章
时间管理
jiffies
2748.1.1
时间比较
2778.1.2
时间转换
延时操作
2798.2.1
长延时
2808.2.2
短延时
内核定时器
2868.3.1
init_timer
2898.3.2
add_timer
2898.3.3
del_timer和del_timer_sync
本章小结
293第9章
Linux设备驱动模型
sysfs文件系统
kobject和kset
2989.2.1
kobject
2989.2.2
kobject的类型属性
3059.2.3
kset
3089.2.4
热插拔中的uevent和call_usermodehelper
3119.2.5
实例源码
总线、设备与驱动
3289.3.1
总线及其注册
3289.3.2
总线的属性
3359.3.3
设备与驱动的绑定
3389.3.4
设备
3399.3.5
驱动
class
本章小结
355第10章
内存映射与DMA
设备缓存与设备内存
mmap
35610.2.1
structvm_area_struct
35710.2.2
用户空间虚拟地址布局
35810.2.3
mmap系统调用过程
36210.2.4
驱动程序中mmap方法的实现
36810.2.5
mmap使用范例
37310.2.6
munmap
DMA
38410.3.1
内核中的DMA层
38410.3.2
物理地址与总线地址
38610.3.3
dma_set_mask
38710.3.4
DMA映射
38810.3.5
回弹缓冲区(bouncebuffer)
40110.3.6
DMA池
本章小结
405第11章
块设备驱动程序
块子系统初始化
ramdisk源码实例
41011.2.1
make_request版本的RAMDISK源码
41111.2.2
request版本的RAMDISK源码
41611.2.3
ramdisk的使用
块设备号的注册与管理
block_device
structgendisk
structhd_struct
用alloc_disk分配gendisk对象42811.8
向系统添加一个块设备add_disk
block_device_operations
块设备文件的打开
blk_init_queue
blk_queue_make_request
向队列提交请求
块设备的请求处理函数
bio结构
本章小结
472第12章
网络设备驱动程序
net_device
网络设备的注册
设备方法
49212.3.1
设备初始化
49412.3.2
设备接口的打开与停止
49512.3.3
数据包的发送
49512.3.4
网络数据包发送过程中的流控机制
50012.3.5
传输超时(watchdogtimeout)
50312.3.6
数据包的接收
套接字缓冲区
中断处理
NAPI
本章小结