头文件linux/proc_fs.h struct proc_dir_entry *proc_mkdir(const char *name, struct proc_dir_entry *parent); 在parent目录创建一个名为name的目录 struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode, struct proc_dir_entry *parent); 在parent目录创建一个名为name,权限为mode...
struct proc_dir_entry *proc_create(const char *name, umode_t mode, struct proc_dir_entry *parent, const struct file_operations *proc_fops) 新的内核版本中,至少在3.10内核中已经看不到create_proc_entry了,取而代之的是使用proc_create创建文件,proc_create中需要指定proc_fops中的...
proc文件系统也有自己的组织结构,那就是proc_dir_entry结构,所有属于proc文件系统的文件,都对应一个proc_dir_entry结构,并且在VFS需要读取proc文件的时候,把这个结构和VFS的inode建立链接(即由inode->u.generic_ip指向该prc_dir_entry结构)。
在注册entry的时候,如果提供read_proc,读文件时调用路径为 proc_file_operations->read->proc_file_read->read_proc 否则使用文件自己的file_operations中的read来读 具体请查看proc_register函数 作者:柒月
struct proc_dir_entry *next, *parent, *subdir; void *data; read_proc_t *read_proc; write_proc_t *write_proc; atomic_t count; int pde_users; spinlock_t pde_unload_lock; struct completion *pde_unload_completion; struct list_head pde_openers; ...
proc_dir_entry结构说明#include <linux/proc_fs.h> int proc_register(struct proc_dir_entry * parent, struct proc_dir_entry * child); int proc_unregister(struct proc_dir_entry * parent, int inode); int proc_register_dynamic(struct proc_dir_entry * parent, struct proc_dir_entry * child)...
proc_dir_entry结构 proc_dir_entry结构 struct proc_dir_entry { unsigned int low_ino;unsigned short namelen;const char *name;mode_t mode;nlink_t nlink;uid_t uid;gid_t gid;loff_t size;const struct inode_operations *proc_iops;const struct file_operations *proc_fops;struct module *owner;str...
由此我们看出,该函数的实现依赖于proc_dir_entry结构中的get_info和read_proc函数,因此,如果我们要注册自己的proc文件,在不设置自己的proc_fops操作函数集的时候,必须实现上面两个函数中的一个,否则,这个缺省的proc_file_read函数将做不了任何工作。示意图如下: ...
Linux系统上的/proc目录是一种文件系统,即proc文件系统。 与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。
proc_create是在kernel 3.10以及之后的版本中新增的,用于替换之create_proc_entry //包含proc头文件#include<linux/proc_fs.h>//定义proc接口staticstructproc_dir_entry*test_dir=NULL;staticstructproc_dir_entry*debug_dir=NULL;//proc open的实现函数staticintproc_debug_open(structinode*inode,structfile*file...