一、/proc文件系统简介
Linux提供了一个特殊的文件系统——/proc,通过建立内核与进程之间发送信息的机制,使得可以在进程运行时动态地读写内核内部的数据结构、改变内核设置。与其他文件系统的不同之处在于,/proc是处于内存之中的。
/proc中的每个文件都绑定于一个内核函数,当用户读取某个文件时,将调用指定函数读取所需信息返回给用户空间,对于内核模块调试而言,需要查看内核所处的状态等信息,此时将可以通过在/proc下创建对应文件,通过读取该文件来及时返回指定内核模块信息。由于大多数/proc文件是只读项,这里介绍只读的情况。
二、使用/proc文件系统
1、传统/proc接口
使用/proc时需要包含头文件,首先需要创建一个函数,使得进程读取指定文件时,可以通过该函数来返回指定信息,该函数称为read_proc方法。当读取文件时,内核将分配一个内存页,该内存页指针将作为参数传递给read_proc方法,在方法中填写所需内容到缓冲区中,最后返回给用户。 Read_proc定义:
QUOTE: |
Int (*read_proc)(char *page, char **start, off_t offset, int count, int *eof, void *data); |
其中page是所分配的内存页,start将指示实际数据写到的内存页的位置,offset指示读取的虚拟文件的位置,count是读取的字节数,eof是一个简单的标志,data用于内部记录。
一旦定义好了read_proc函数,就应该将其与一个/proc