您的位置:
首页
>>
SoftHub关联区
>> 主题: generic_file_read_iter 和 __generic_file_write_iter 有相似的逻辑,就是是否使用缓存
[最新]
[回主站]
generic_file_read_iter 和 __generic_file_write_iter 有相似的逻辑,就是是否使用缓存
clq
浏览(564) -
2022-10-19 15:21:53 发表
编辑
关键字:
https://blog.csdn.net/weixin_42462202/article/details/102592948
2.1 直接读写
对于 ext4 文件系统,定义了一个文件操作集 file_operations,如下
const struct file_operations ext4_file_operations = {
......
.read_iter = ext4_file_read_iter,
.write_iter = ext4_file_write_iter,
......
}
1
2
3
4
5
6
7
对于 ext4 文件系统,没有定义 read 和 write,所以会调用 ext4_file_read_iter 和 ext4_file_write_iter
ext4_file_read_iter 会调用 generic_file_read_iter,ext4_file_write_iter 会调用 __generic_file_write_iter
ssize_t
generic_file_read_iter(struct kiocb *iocb, struct iov_iter *iter)
{
......
if (iocb->ki_flags & IOCB_DIRECT) {
......
struct address_space *mapping = file->f_mapping;
......
retval = mapping->a_ops->direct_IO(iocb, iter);
}
......
retval = generic_file_buffered_read(iocb, iter, retval);
}
ssize_t __generic_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
{
......
if (iocb->ki_flags & IOCB_DIRECT) {
......
written = generic_file_direct_write(iocb, from);
......
} else {
......
written = generic_perform_write(file, from, iocb->ki_pos);
......
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
generic_file_read_iter 和 __generic_file_write_iter 有相似的逻辑,就是是否使用缓存
缓存其实就是一块内存空间,因为内存的访问速度比硬盘快许多,所以Linux为了提高读写性能,会准备一块缓存,不直接操作硬盘,而是直接操作内存,然后批量读取或者写入磁盘
本帖子属于以下条目()
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.