proc文件系统-------
可以通过/proc/meminfo,查询当前内存使用情况。
结论--proc文件系统是一种在用户态检察内核状态的机制。
proc文件系统子目录或文件----
bus---------------总线以及总线上的设备信息
apm--------------高级电源管理信息
devices----------可用的设备信息
driver-------------已经启用的驱动程序
interrupts-------中断信息
ioports-----------端口使用信息
version-----------内核版本
特点-------------
每个文件都规定了严格的权限。
可以用文本编辑程序读取。
不仅可以有文件,还可以有子目录。
可以自己编写程序添加一个/proc目录下的文件。
文件的内容都是动态创建的,并不 存在磁盘上。
内核描述---
struct proc_dir_entry
{
..........................................................
read_proc_t *read_proc;
write_proc_t *write_proc;
.........................................
}
创建proc文件-----
struct proc_dir_entry *create_proc_entry(
const char *name,要创建的文件名
mode_t mode,要创建的文件属性 默认0755
struct proc_dir_entry *parent这个文件的父目录
)
创建proc目录-------
struct proc_dir_entry *proc_mkdir(
const char *name,要创建的目录名
struct proc_dir_entry *parent这个目录的父目录
)
删除proc目录或文件-------
void remove_proc_entry (
const char *name,要删除的目录名或文件名
struct proc_dir_entry *parent所在的父目录
)
读写-------
为了能让用户读写添加的proc文件,需要挂接上读写回调函数:
read_proc
write_proc
读操作----
int read_func(
char *buffer,把要返回给用户的信息写在buffer里,最大不超过PAGE_SIZE
char **stat,一般不使用
off_t off,偏移量
int count,用户要读取的字节数
int *peof,读到文件尾时,需要把*peof置1
void *data一般不使用
)
写操作-----
int write_func(
struct file *file,该proc文件对应的file结构,一般忽略。
const char *buffer,待写的数据所在的位置
unsigned long count,待写数据的大小
void *data一般不使用
)
实现流程---
1--调用create_proc_entry创建一个struct proc_dir_entry.
2--对创建的struct proc_dir_entry进行赋值read_proc,mode,owner,size,write_proc等等。