Chinaunix首页 | 论坛 | 博客

分类: LINUX

2012-11-23 17:24:31

    proc 文件系统是一种在用户态检查内核态的机制,文件里面的内容是动态创建的,并不存在于非易失性存储器中。通常我们可以使用 proc 文件系统来查看系统的内存、中断和设备情况(cat /proc devices; cat /proc interrupt)。

struct proc_dir_entry {
    const char *name;
    mode_t mode;
    loff_t size;
    ……
    struct module *owner;
    struct proc_dir_entry *next, *parent, *subdir;
    read_proc_t *read_proc;
    write_proc_t *write_proc;
};

创建 proc 文件:
struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode,
                                         struct proc_dir_entry *parent)

name:要创建的文件名
mode:要创建的文件的属性,默认0755
parent:这个文件的父目录

创建 proc 目录:
struct proc_dir_entry *proc_mkdir(const char *name, struct proc_dir_entry
                                  *parent)

name:要创建的目录名
parent:这个目录的父目录

删除 proc 目录或文件:
void remove_proc_entry(const char *name, struct proc_dir_entry *parent)
name:要删除的文件或目录名
parent:所在的父目录

用户读写接口:
typedef    int (read_proc_t)(char *page, char **start, off_t off,
                             int count, int *eof, void *data);

page:把要返回给用户的信息写到 page 里,最大不超过 PAGE_SIZE
start:一般不使用
off:偏移量
count:用户要读取的字节数
eof:读到文件末尾时,需要把 *eof 置为1
data:一般不使用

typedef    int (write_proc_t)(struct file *file, const char __user
                              *buffer, unsigned long count, void *data);

file:该 proc 文件对应的 file 结构,一般忽略
buffer:待写的数据所在的位置
count:待写数据的大小
data:一般不使用

实现一个 proc 文件的流程:

1.调用 create_proc_entry() 创建一个 struct proc_dir_entry;
2.对创建的 struct proc_dir_entry 结构体成员进行赋值,例如:read_proc、write_proc 等等。

                       ——忠于梦想 勇于实践    linux_xpj@opencores.org

阅读(1662) | 评论(0) | 转发(0) |
0

上一篇:Linux内核定时器

下一篇:WIN7系统基本设置

给主人留下些什么吧!~~