proc源码解析(六)--proc文件读写函数

这篇博客深入解析了proc文件系统中默认的文件读写函数,关注于如何处理目录项创建时使用的默认操作。内容涉及file结构、buffer管理和用户空间的数据交互。

    前边说过目录项创建时一般都使用默认的读写函数,本节就来看看默认的文件操作函数的定义。前边已经引用过该定义,此处再次引用:


static const struct file_operations proc_file_operations = {
    .llseek    = proc_file_lseek,
    .read        = proc_file_read,
    .write        = proc_file_write,
};
proc_file_read的实现
从proc文件中读取数据需要经历三个步骤
1.申请内存页用于存储数据
2.调用文件相关的函数填充步骤1申请的内存页
3.把数据从内核空间拷贝到用户空间
    很明显,步骤2至关重要,因为这一步正是准备数据。在二.proc数据结构一节我们已经注意到struct proc_dir_entry中提供了两个用于读取数据的函数指针,get_info和read_proc,在proc_file_read中就需要根据不同情况选取二者其一。闲言少叙,上代码说话。一如既往,代码是经过简化的。
static ssize_t proc_file_read(struct file *file, char __user *buf,
                              &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值