|
3 mēneši atpakaļ | |
---|---|---|
.. | ||
README.md | 3 mēneši atpakaļ | |
SConscript | 3 mēneši atpakaļ | |
proc.c | 3 mēneši atpakaļ | |
proc.h | 3 mēneši atpakaļ | |
proc_cmdline.c | 3 mēneši atpakaļ | |
proc_cpuinfo.c | 3 mēneši atpakaļ | |
proc_devices.c | 3 mēneši atpakaļ | |
proc_filesystems.c | 3 mēneši atpakaļ | |
proc_loadavg.c | 3 mēneši atpakaļ | |
proc_meminfo.c | 3 mēneši atpakaļ | |
proc_mounts.c | 3 mēneši atpakaļ | |
proc_net.c | 3 mēneši atpakaļ | |
proc_partitions.c | 3 mēneši atpakaļ | |
proc_pid.c | 3 mēneši atpakaļ | |
proc_self.c | 3 mēneši atpakaļ | |
proc_stat.c | 3 mēneši atpakaļ | |
proc_tty.c | 3 mēneši atpakaļ | |
proc_uptime.c | 3 mēneši atpakaļ | |
proc_version.c | 3 mēneši atpakaļ | |
procfs.c | 3 mēneši atpakaļ | |
procfs.h | 3 mēneši atpakaļ |
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 }
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);
查找指定节点,并返回节点数据指针
| 入参 | 说明 | | ---- | ---------------------------------------------------- | | name | 从 procfs 的 root 起始的完整路径,比如 “/dir1/file2” |
创建一个目录,并返回节点数据指针
| 入参 | 说明 |
| ------ | ------------------------------------------------------------ |
| name | 从 procfs 的 root 起始的完整路径,比如 “/dir1/file2”
从 parent 起始的完整路径 |
| mode | 权限配置 |
| parent | 指定创建目录的起始节点 |
| fops | 文件操作接口配置 |
| data | 私有数据 |
创建一个目录,并返回节点数据指针
| 入参 | 说明 |
| ------ | ------------------------------------------------------------ |
| name | 从 procfs 的 root 起始的完整路径,比如 “/dir1/file2”
从 parent 起始的完整路径 |
| mode | 权限配置 |
| parent | 指定创建目录的起始节点 |
创建一个目录,并返回节点数据指针
| 入参 | 说明 |
| ---- | ------------------------------------------------------------ |
| name | 从 procfs 的 root 起始的完整路径,比如 “/dir1/file2”
从 parent 起始的完整路径 |
| mode | 权限配置 |
创建一个文件,并返回节点数据指针
| 入参 | 说明 |
| ------ | ------------------------------------------------------------ |
| name | 从 procfs 的 root 起始的完整路径,比如 “/dir1/file2”
从 parent 起始的完整路径 |
| mode | 权限配置 |
| parent | 指定创建文件的起始节点 |
| fops | 文件操作接口配置 |
| data | 私有数据 |
创建一个符号链接,并返回节点数据指针
| 入参 | 说明 |
| ------ | ------------------------------------------------------------ |
| name | 从 procfs 的 root 起始的完整路径,比如 “/dir1/file2”
从 parent 起始的完整路径 |
| parent | 指定创建文件的起始节点 |
| dest | 链接的目标文件完整路径 |
引用一个节点,并返回节点数据指针
| 入参 | 说明 | | ------ | -------------- | | dentry | 需要引用的节点 |
释放一个节点
| 入参 | 说明 | | ------ | -------------- | | dentry | 需要释放的节点 |
删除一个节点包含子节点
| 入参 | 说明 | | ------ | -------------- | | dentry | 需要删除的节点 |
遍历打印指定节点含子节点的信息(名称、引用计数),比如 proc_dump /dir1
或者 proc_dump
删除指定节点含子节点,比如 proc_remove /dir1
或者 proc_remove /file3
创建一个符号链接,proc_symlink /link3 /mnt
创建一个空文件,proc_echo /file4
创建一个空目录,proc_mkdir /dir3
创建一个 pid 目录,proc_pid /101