首页
›
Linux内核与驱动
›
093-Linux驱动开发
›
《Linux字符设备驱动:阻塞与非阻塞IO与poll机制》
VIP10
本课程属于:093-Linux驱动开发
Linux内核与驱动 · 共 10 门相关课程,组合学习更完整。
查看所属VIP全部课程 →
← 返回所属目录
咨询 / 购买
Linux字符设备驱动:阻塞与非阻塞IO与poll机制
共计 30 章节
点击此处阅读海量试读课程:100+行业、1000+细分领域
01
课程导论
阻塞与非阻塞IO的概念 · poll机制的作用 · 本课程的学习目标与前置知识
课程导论
IO
02
Linux字符设备驱动基础回顾
file_operations结构体 · cdev注册 · 设备号分配
Linux
字符设备驱动基础…
03
阻塞IO原理
等待队列(wait_queue)数据… · 进程状态切换 · 调度器与阻塞唤醒的关系
IO
阻塞
04
等待队列头初始化
静态初始化(DECLARE_WAIT…
等待队列头初始化
DECLARE
05
等待队列条目
等待队列条目结构(wait_queu… · 自定义等待队列条目的创建与初始化
等待队列条目
wait
06
将进程加入等待队列
add_wait_queue函数 · remove_wait_queue函… · 等待队列的链表操作
将进程加入等待队…
add
07
阻塞读实现(上)
在read函数中使用wait_eve…
阻塞读实现
read
08
阻塞读实现(下)
条件变量的设计 · 在中断或写操作中唤醒等待队列(wak…
阻塞读实现
条件变量的设计
09
阻塞写实现
对称设计 · 使用wait_event_inter…
阻塞写实现
对称设计
10
非阻塞IO原理
O_NONBLOCK标志 · file->f_flags检查 · 立即返回-EAGAIN
IO
非阻塞
11
非阻塞读实现
在read函数中检查O_NONBLO… · 若数据不可用则返回-EAGAIN
非阻塞读实现
read
12
非阻塞写实现
在write函数中检查O_NONBL… · 若缓冲区满则返回-EAGAIN
非阻塞写实现
write
13
阻塞与非阻塞的混合使用
驱动同时支持两种模式 · 根据open标志或f_flags动态…
阻塞
非阻塞的混合使用
14
poll机制原理
select/poll/epoll系… · 驱动poll函数的作用 · 返回掩码(POLLIN/POLLOU…
poll
机制原理
15
poll函数接口
struct file_operat… · __poll_t返回值类型
poll
函数接口
16
poll_wait函数
将等待队列与poll_table关联 · poll_wait的调用时机与作用
poll
wait
17
poll读就绪实现
在poll函数中调用poll_wai… · 并返回POLLIN | POLLRD…
poll
读就绪实现
18
poll写就绪实现
在poll函数中调用poll_wai… · 并返回POLLOUT | POLLW…
poll
写就绪实现
19
poll异常与错误处理
返回POLLERR · POLLHUP · POLLNVAL的场景与实现
poll
异常
20
多等待队列的poll
驱动同时监控多个条件(如读 · 写 · 异常)
poll
多等待队列的
21
驱动中的原子操作与自旋锁
在阻塞/非阻塞/poll路径中保护共… · 标志位)
驱动
原子操作
22
驱动中的互斥体(mutex)
在等待队列唤醒后重新获取互斥体 · 避免竞态
mutex
驱动
23
完整驱动框架(一)
定义设备结构体 · 缓冲区 · 等待队列头
完整驱动框架
定义设备结构体
24
完整驱动框架(二)
实现open · release函数 · 进行设备初始化与清理
完整驱动框架
open
25
完整驱动框架(三)
实现阻塞read · write函数 · 包含等待与唤醒逻辑
完整驱动框架
read
26
完整驱动框架(四)
实现非阻塞read · write函数 · 包含-EAGAIN返回
完整驱动框架
read
27
完整驱动框架(五)
实现poll函数 · 支持select/poll/epol…
完整驱动框架
poll
28
用户空间测试程序
编写C程序测试阻塞读 · 非阻塞读 · select/poll超时与事件
用户空间测试程序
编写C程序测试阻…
29
调试技巧
使用printk · ftrace · strace跟踪系统调用与驱动行为
调试技巧
printk
30
课程总结与进阶
阻塞与非阻塞IO的权衡 · poll机制的性能考量 · epoll与驱动的交互
课程总结
进阶
所属VIP或分类
同VIP:Linux设备树实战:GPIO与中断控制器节点编写
同VIP:Linux驱动开发:I2C总线设备驱动编写实战
同VIP:Linux驱动开发:IO内存访问与ioremap映射教程