Linux:proc文件系统

来源:互联网 发布:js导出csv 编辑:程序博客网 时间:2024/06/07 01:00


proc文件系统是一种在用户态检查内核状态机制.

子目录:

        apm:高级电源管理信息.

        bus:总线以及总线上的设备.

       devices:可用的设备信息.

        driver:已经启动的驱动程序.

       interrupts:中断信息.

       ioports:端口使用信息.

       version:内核版本.

特点:

    1.可用文本编辑程序读取. (more ,cat , vi , and soon)

    2.不仅可以有文件,还可以有子目录.

    3.自己可以编写程序添加一个目录/文件.

     4.文件内容是动态创建的,并不存在与磁盘上.

 

内核描述:

struct proc_dir_entry{

 .......

 read_proc_t *read_proc;

 write_proc_t *write_proc;

};

 

创建文件:

struct proc_dir_entry*create_proc_entry(const char *name , mode_t mode,

                                                                    struct proc_dir_entry *parent);

功能:创建proc文件.

name:要创建的文件名.

mode:要创建文件的属性. (默认 0755)

parent:这个文件的父目录,如果父目录是proc,则为NULL.

             否则填写函数proc_mkdir返回的值.

返回:文件的结构指针.(内核描述的结构体)

 

创建目录:

struct proc_dir_entry* proc_mkdir (const char *name , structproc_dir_entry

                                                           *parent);

功能:创建proc目录.

name:目录名称.

parent:这个目录的父目录.

 

删除目录:

voidremove_proc_entry (const char *name , struct proc_dir_entry*parent);

 功能:创建proc目录.

name:目录名称.

parent:这个目录的父目录.

 

写操作:

int read_proc(char*buffer , char **stat , off_t off , int count , int *peof , void*data);

buffer:把要返回给用户的信息写在buffer里面,max:PAGE_SIZE.

stat:一般不用》

off:偏移量.

count:用户要取的字节数.

peof:读到文件尾时,*peof =1;

data:一般不用.

 

写操作:

int write_proc(structfile *file, const char *buffer , unsigned long count , void*data);

file:该proc文件对应得file结构,一般忽略.

buffer:待写得数据所在的位置.

count:待写数据的大小.

data:一般不用.

 

实现流程:

             1.调用create_proc_entry创建一个struct proc_dir_entry.

              2.对创建的structproc_dir_entry 进行赋值:read_proc, mode, owner,size,

                                                                                    write_procand so on.

 

最后补充一点:

内核异常分析步骤:

                            1.查看错误原因提示.

                            2.查看调用栈.  (对照反汇编代码)

                            3.寄存器.

 

搞定~~~可以睡觉了~~

0 0
原创粉丝点击