Linux:proc文件系统


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

子目录:

        apm:高级电源管理信息.

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

        devices:可用的设备信息.

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

        interrupts:中断信息.

        ioports:端口使用信息.

        version:内核版本.

特点:

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

     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 , struct proc_dir_entry

                                                            *parent);

功能:创建proc目录.

name:目录名称.

parent:这个目录的父目录.

 

删除目录:

void remove_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(struct file *file, const char *buffer , unsigned long count , void *data);

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

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

count:待写数据的大小.

data:一般不用.

 

实现流程:

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

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

                                                                                    write_proc and so on.

 

最后补充一点:

内核异常分析步骤:

                             1.查看错误原因提示.

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

                             3.寄存器.

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值