mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2025-02-15 05:29:24 +08:00
进程文件系统 (procfs)
数据结构
struct proc_dentry
{
rt_uint32_t mode;
rt_atomic_t ref_count;
struct proc_dentry *parent;
struct dfs_vfs_node node;
const struct dfs_file_ops *fops;
const struct proc_ops *ops;
char *name;
void *data;
};
root { mode: S_IFDIR, ref_count: 1, parent: root, name: /, child->next: file1->node }
|
|—— file1 { mode: S_IFREG, ref_count: 1, parent: root, name: file1, node->next: link1->node }
|—— link1 { mode: S_IFLNK, ref_count: 1, parent: root, name: link1, data: fullpath, node->next: dir1->node }
|—— dir1 { mode: S_IFDIR, ref_count: 1, parent: root, name: dir1, node->next: file3->node, child->next: file2->node }
| |
| |—— dir2 { mode: S_IFDIR, ref_count: 1, parent: dir1, name: dir2, node->next: link2->node }
| |—— link2 { mode: S_IFLNK, ref_count: 1, parent: dir1, name: link2, data: fullpath, node->next: file2->node }
| |—— file2 { mode: S_IFREG, ref_count: 1, parent: dir1, name: file2 }
|
|—— file3 { mode: S_IFREG, ref_count: 1, parent: root, name: file3 }
API 介绍
struct proc_dentry *dfs_proc_find(const char *name);
struct proc_dentry *proc_mkdir_data(const char *name, mode_t mode, struct proc_dentry *parent,
const struct dfs_file_ops *fops, void *data);
struct proc_dentry *proc_mkdir_mode(const char *name, mode_t mode, struct proc_dentry *parent);
struct proc_dentry *proc_mkdir(const char *name, struct proc_dentry *parent);
struct proc_dentry *proc_create_data(const char *name, mode_t mode, struct proc_dentry *parent,
const struct dfs_file_ops *fops, void *data);
struct proc_dentry *proc_symlink(const char *name, struct proc_dentry *parent, const char *dest);
struct proc_dentry *proc_acquire(struct proc_dentry *dentry);
void proc_release(struct proc_dentry *dentry);
void proc_remove(struct proc_dentry *dentry);
-
dfs_proc_find
查找指定节点,并返回节点数据指针
入参 说明 name 从 procfs 的 root 起始的完整路径,比如 “/dir1/file2” -
proc_mkdir_data
创建一个目录,并返回节点数据指针
入参 说明 name 从 procfs 的 root 起始的完整路径,比如 “/dir1/file2”
从 parent 起始的完整路径mode 权限配置 parent 指定创建目录的起始节点 fops 文件操作接口配置 data 私有数据 -
proc_mkdir_mode
创建一个目录,并返回节点数据指针
入参 说明 name 从 procfs 的 root 起始的完整路径,比如 “/dir1/file2”
从 parent 起始的完整路径mode 权限配置 parent 指定创建目录的起始节点 -
proc_mkdir
创建一个目录,并返回节点数据指针
入参 说明 name 从 procfs 的 root 起始的完整路径,比如 “/dir1/file2”
从 parent 起始的完整路径mode 权限配置 -
proc_create_data
创建一个文件,并返回节点数据指针
入参 说明 name 从 procfs 的 root 起始的完整路径,比如 “/dir1/file2”
从 parent 起始的完整路径mode 权限配置 parent 指定创建文件的起始节点 fops 文件操作接口配置 data 私有数据 -
proc_symlink
创建一个符号链接,并返回节点数据指针
入参 说明 name 从 procfs 的 root 起始的完整路径,比如 “/dir1/file2”
从 parent 起始的完整路径parent 指定创建文件的起始节点 dest 链接的目标文件完整路径 -
proc_acquire
引用一个节点,并返回节点数据指针
入参 说明 dentry 需要引用的节点 -
proc_release
释放一个节点
入参 说明 dentry 需要释放的节点 -
proc_remove
删除一个节点包含子节点
入参 说明 dentry 需要删除的节点
msh 调试命令
-
proc_dump
遍历打印指定节点含子节点的信息(名称、引用计数),比如
proc_dump /dir1
或者proc_dump
-
proc_remove
删除指定节点含子节点,比如
proc_remove /dir1
或者proc_remove /file3
-
proc_symlink
创建一个符号链接,
proc_symlink /link3 /mnt
-
proc_echo
创建一个空文件,
proc_echo /file4
-
proc_mkdir
创建一个空目录,
proc_mkdir /dir3
-
proc_pid
创建一个 pid 目录,proc_pid /101