标题:
Linux内核中的proc文件系统(2)
[打印本页]
作者:
yuyang911220
时间:
2017-4-23 20:15
标题:
Linux内核中的proc文件系统(2)
关键结构体
struct proc_dir_entry代表的是/proc目录下的一个目录或者文件,他是procfs文件系统的主要结构体,它的定义在/fs/internal.h中:
/*
* This is
not completely implemented yet. The idea is
to
* create an in-memory tree (like the actual /proc filesystem
* tree) of these proc_dir_entries, so that we can dynamically
* add new files to /proc.
*
* The "next" pointer creates a linked list of one /proc directory,
* while parent/subdir create the directory structure (every
* /proc file has a parent, but "subdir"
is
NULL
for
all
* non-directory entries).
*/
struct proc_dir_entry {
unsigned int low_ino;
umode_t mode;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
const struct inode_operations *proc_iops;
const struct file_operations *proc_fops;
struct proc_dir_entry *next, *parent, *subdir;
void *data;
atomic_t count; /* use count */
atomic_t in_use; /* number of callers into module in progress; */
/* negative -> it's going away RSN */
struct completion *pde_unload_completion;
struct list_head pde_openers; /* who did ->open, but not ->release */
spinlock_t pde_unload_lock; /* proc_fops checks and pde_users bumps */
u8 namelen;
char
name[];
};
主要接口
procfs应该包含的头文件<linux/proc_fs.h>。
在3.x内核中procfs主要接口有:
proc_symlink
proc_mkdir
proc_mkdir_data
proc_mkdir_mode
proc_create_data
proc_create
proc_set_size
proc_set_user
PDE_DATA
proc_get_parent_data
proc_remove
remove_proc_entry
remove_proc_subtree
proc_mkdir
说明:在/proc下创建目录
函数原型:
struct proc_dir_entry *proc_mkdir(const char *name, struct proc_dir_entry *parent)
参数:
name
要创建的目录名称
parent
父目录,如果为NULL,表示直接在/proc下面创建目录。
proc_mkdir_data
说明:在/proc下创建目录
函数原型:
struct proc_dir_entry *proc_mkdir_data(const char *name, umode_t mode, struct proc_dir_entry *parent, void *data)
参数:
name
要创建的目录名称
mode
指定要创建目录的权限
parent
父目录,如果为NULL,表示直接在/proc下面创建目录。
data
proc_create_data
说明:创建proc虚拟文件系统文件
函数原型:
struct proc_dir_entry *proc_create_data(const char *name, umode_t mode, struct proc_dir_entr
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0