2024年4月29日发(作者:)

本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请

保持文档的完整性,严禁用于任何商业用途。

msn: yfydz_no1@

来源:

1. 前言

在fs/seq_file.c中定义了关于seq操作的一系列顺序读取的函数,这些函数最早是在

2001年就引入了,但以前内核中一直用得不多,而到了2.6内核后,许多/proc的只读文

件中大量使用了seq函数处理。

以下内核源码版本为2.6.17.11。

2. seq相关数据结构

2.1 seq文件结构

struct seq_file {

char *buf;

size_t size;

size_t from;

size_t count;

loff_t index;

loff_t version;

struct mutex lock;

struct seq_operations *op;

void *private;

};

struct seq_file描述了seq处理的缓冲区及处理方法,buf是动态分配的,大小不小

于PAGE_SIZE,通常这个结构是通过struct file结构中的private_data来指向的。

char *buf:seq流的缓冲区

size_t size:缓冲区大小

size_t from:from指向当前要显示的数据头位置

size_t count:缓冲区中已有的数据长度

loff_t index:数据记录索引值