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
阅读(1646) | 评论(0) | 转发(0) |