Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1743258
  • 博文数量: 143
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1462
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-23 11:14
文章分类

全部博文(143)

文章存档

2022年(3)

2021年(13)

2020年(21)

2019年(8)

2018年(28)

2017年(7)

2016年(63)

我的朋友

分类: LINUX

2018-12-09 16:59:43

内核通过proc文件系统下建立文件,来向用户空间提供输出信息,用户空间可以通过任何文本阅读应用,来查看该文件信息。

但是,在老版本的Linux内核中,proc文件系统有一个缺陷:如果输出内容大于1个内存页,需要多次读,因此处理起来很难。另外,如果输出内容太大,速度会比较慢,有时会出现一些意想不到的情况。比如,对于需要输出大量信息像meminfo,或者结构化的信息像cpuinfo等时就会显得很笨拙,并且代码也很不好理解与维护。

因此,内核为了简化这种proc文件的实现,提供了另一种方案-seq_file接口。并,在2.6内核中,由于大量使用了seq_file功能,使得内核输出大文件信息更容易。seq_file的函数,最早是在2001年就引入了,但以前内核中一直用得不多,而到了2.6内核后,许多/proc的只读文件中大量使用了seq函数处理。


1.非结构化信息显示方式-single_open方式

此种方式是简单方式,对应的释放函数为single_release

如内核中的meminfo信息的实现(cat /proc/meminfo查看)。...见实例。

如我的上一篇文章创建proc文件


2.结构化信息显示方式-seq_open方式

此种方式为复杂方式,对应的释放函数为seq_release

如内核中的cpuinfo信息的实现(cat /proc/cpuinfo查看)。...见实例。


3.实例

linux设备驱动学习笔记--内核调试方法之proc(补充seq_file

阅读(7991) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~