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

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


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,
                                     size_t nbytes, loff_t *ppos)
{
    struct inode * inode = file->f_path.dentry->d_inode;
    char     *page;
   
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值