Linux设备驱动Schar的读写与控制机制详解
1. Schar设备的读取操作
1.1 数据读取流程
在Schar设备的读取操作中, schar_read 函数起着关键作用。其主要流程如下:
1. 检查请求读取的数据量 count 是否超过当前缓冲区 schar_pool 中的数据量。
2. 若 count 大于 schar_pool ,则根据设备的打开模式(阻塞或非阻塞)进行不同处理。
3. 若为阻塞模式,将当前进程放入等待队列 schar_wq 中,直到有足够的数据可用。
4. 若为非阻塞模式,若 schar_pool 大于0,则返回 schar_pool 中的数据;若 schar_pool 为0,则返回 -EAGAIN 。
5. 若数据足够,将数据从内部缓冲区 schar_buffer 复制到用户空间缓冲区 buf ,使用 copy_to_user 函数。
6. 更新 schar_pool 和 schar_data_read ,并更新文件位置 file->f_pos 。
以下是 schar_read 函
超级会员免费看
订阅专栏 解锁全文
1482

被折叠的 条评论
为什么被折叠?



