Lines Matching refs:dentry
38 struct proc_dentry *dentry = RT_NULL, *tmp; in _proc_find() local
40 dfs_vfs_for_each_subnode(dentry, tmp, (*parent), node) in _proc_find()
42 if (dentry == RT_NULL) in _proc_find()
47 if (rt_strcmp(dentry->name, name) == 0) in _proc_find()
49 *parent = dentry; in _proc_find()
203 struct proc_dentry *dentry = RT_NULL; in proc_create() local
208 dentry = *parent; in proc_create()
209 ret = proc_find(&dentry, &name, 1); in proc_create()
212 dentry = rt_calloc(1, sizeof(struct proc_dentry)); in proc_create()
213 if (dentry) in proc_create()
215 dentry->mode = mode; in proc_create()
216 dentry->ref_count = 1; in proc_create()
217 dentry->name = rt_strdup(name); in proc_create()
218 dfs_vfs_init_node(&dentry->node); in proc_create()
223 proc_release(dentry); in proc_create()
224 dentry = RT_NULL; in proc_create()
228 return dentry; in proc_create()
238 struct proc_dentry *proc_acquire(struct proc_dentry *dentry) in proc_acquire() argument
240 if (dentry) in proc_acquire()
242 dentry->ref_count += 1; in proc_acquire()
245 return dentry; in proc_acquire()
255 void proc_release(struct proc_dentry *dentry) in proc_release() argument
257 if (dentry) in proc_release()
259 if (dentry->ref_count == 1) in proc_release()
261 if (dentry->name) in proc_release()
263 rt_free(dentry->name); in proc_release()
266 if (S_ISLNK(dentry->mode) && dentry->data) in proc_release()
268 rt_free(dentry->data); in proc_release()
271 rt_free(dentry); in proc_release()
275 dentry->ref_count -= 1; in proc_release()
304 struct proc_dentry *dentry, *_parent = parent; in proc_mkdir_data() local
309 dentry = proc_create(&_parent, name, S_IFDIR | mode); in proc_mkdir_data()
310 if (dentry) in proc_mkdir_data()
312 dentry->fops = fops; in proc_mkdir_data()
313 dentry->data = data; in proc_mkdir_data()
315 dentry = proc_register(_parent, dentry); in proc_mkdir_data()
319 return dentry; in proc_mkdir_data()
351 struct proc_dentry *dentry = RT_NULL; in proc_create_reg() local
361 return dentry; in proc_create_reg()
381 struct proc_dentry *dentry, *_parent = parent; in proc_create_data() local
383 dentry = proc_create_reg(name, mode, &_parent); in proc_create_data()
384 if (dentry) in proc_create_data()
386 dentry->fops = fops ? fops : &proc_file_ops; in proc_create_data()
387 dentry->data = data; in proc_create_data()
389 dentry = proc_register(_parent, dentry); in proc_create_data()
393 return dentry; in proc_create_data()
410 struct proc_dentry *dentry, *_parent = parent; in proc_create_single_data() local
412 dentry = proc_create_reg(name, mode, &_parent); in proc_create_single_data()
413 if (dentry) in proc_create_single_data()
415 dentry->fops = &proc_file_ops; in proc_create_single_data()
416 dentry->single_show = show; in proc_create_single_data()
417 dentry->data = data; in proc_create_single_data()
419 dentry = proc_register(_parent, dentry); in proc_create_single_data()
423 return dentry; in proc_create_single_data()
437 struct proc_dentry *dentry, *_parent = parent; in proc_symlink() local
439 dentry = proc_create(&_parent, name, (S_IFLNK | (S_IRUSR | S_IRGRP | S_IROTH) in proc_symlink()
441 if (dentry) in proc_symlink()
443 dentry->data = (void *)rt_strdup(dest); in proc_symlink()
444 if (dentry->data) in proc_symlink()
446 dentry = proc_register(_parent, dentry); in proc_symlink()
450 proc_release(dentry); in proc_symlink()
451 dentry = NULL; in proc_symlink()
456 return dentry; in proc_symlink()
459 static void remove_proc_subtree(struct proc_dentry *dentry) in remove_proc_subtree() argument
463 dfs_vfs_for_each_subnode(iter, iter_tmp, dentry, node) in remove_proc_subtree()
478 if (S_ISDIR(dentry->mode)) in remove_proc_subtree()
498 void proc_remove(struct proc_dentry *dentry) in proc_remove() argument
500 if (dentry && dentry != &_proc_root) in proc_remove()
502 if (S_ISDIR(dentry->mode)) in proc_remove()
504 remove_proc_subtree(dentry); in proc_remove()
507 dfs_vfs_remove_node(&dentry->node); in proc_remove()
508 proc_release(dentry); in proc_remove()
521 struct proc_dentry *dentry = RT_NULL; in dfs_proc_find() local
523 proc_find(&dentry, &name, 1); in dfs_proc_find()
525 return dentry; in dfs_proc_find()
538 struct proc_dentry *dentry = parent; in proc_remove_dentry() local
540 if (proc_find(&dentry, &name, 1) >= 0) in proc_remove_dentry()
542 proc_remove(dentry); in proc_remove_dentry()
543 proc_release(dentry); in proc_remove_dentry()
554 static void dump_proc_subtree(struct proc_dentry *dentry, int tab) in dump_proc_subtree() argument
558 dfs_vfs_for_each_subnode(iter, tmp, dentry, node) in dump_proc_subtree()
586 static void proc_dump(struct proc_dentry *dentry) in proc_dump() argument
588 if (dentry) in proc_dump()
590 if (S_ISDIR(dentry->mode)) in proc_dump()
592 rt_kprintf(_COLOR_BLUE "%-20s" _COLOR_NORMAL " %d\n", dentry->name, dentry->ref_count); in proc_dump()
593 dump_proc_subtree(dentry, 1); in proc_dump()
595 else if (S_ISLNK(dentry->mode)) in proc_dump()
597 rt_kprintf(_COLOR_CYAN "%-20s" _COLOR_NORMAL " %d\n", dentry->name, dentry->ref_count); in proc_dump()
601 rt_kprintf("%-20s %d\n", dentry->name, dentry->ref_count); in proc_dump()
609 struct proc_dentry *dentry = RT_NULL; in msh_proc_dump() local
611 int ret = proc_find(&dentry, &name, 1); in msh_proc_dump()
614 proc_dump(dentry); in msh_proc_dump()
616 proc_release(dentry); in msh_proc_dump()
627 struct proc_dentry *dentry = RT_NULL; in msh_proc_remove() local
629 int ret = proc_find(&dentry, &name, 1); in msh_proc_remove()
632 if (dentry != &_proc_root) in msh_proc_remove()
634 proc_remove(dentry); in msh_proc_remove()
640 dfs_vfs_for_each_subnode(iter, iter_tmp, dentry, node) in msh_proc_remove()
661 proc_release(dentry); in msh_proc_remove()