|
Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
|
#include <hash.h>#include <llist.h>#include <str.h>#include <string.h>#include <type.h>#include <vector.h>#include <vfs/dentry.h>#include "libk/serial.h"#include "memory/kalloc.h"#include "memory/slab.h"#include "vfs/cache.h"#include "vfs/dev.h"#include "vfs/enum.h"#include "vfs/rcu.h"#include "vfs/vnode.h"#include <spinlock.h>Go to the source code of this file.
Functions | |
| uint32_t | hash_dentry (const char *name, dentry_ptr parent) |
| dentry_ptr | __attribute__ ((used, visibility("default"), section(".export"))) |
| This function handles memory allocation for a new dentry using the slab allocator. | |
| static void | dentry_free_rcu (struct rcu_head *head) |
| void | dentry_get (dentry_ptr dentry) |
| void | dentry_put (dentry_ptr dentry) |
| void | vxSetDentryAsRoot (dentry_ptr dentry) |
| void | delete_dentry (dentry_t *node) |
| void | print_dentry_tree (dentry_t *dentry, int depth) |
| int | get_reffcount (dentry_ptr dentry) |
| kstring | get_full_path_from_dentry (dentry_ptr dentry) |
Variables | |
| static struct slab_cache * | dentry_cache = 0 |
| static dentry_t * | root_dentry = 0 |
| static spinlock_t | lock = {0} |
| dentry_ptr __attribute__ | ( | (used, visibility("default"), section(".export")) | ) |
This function handles memory allocation for a new dentry using the slab allocator.
It also links the dentry to its corresponding VNode (if provided).
| name | The name of the file or directory. |
| vnode | Pointer to the associated VNode (inode data). Pass NULL if the VNode is not yet available. |
Definition at line 36 of file dentry.c.
References dentry::child_list, atomic_t::counter, hlist_node::dentry, dentry_cache, dentry::hash, hash_dentry(), dentry::hash_node, KERNEL_API, llist_init(), lock, memset(), dentry::name, name, hlist_node::next, dentry::parent, parent, hlist_node::prev, dentry::refcount, spin_acquire(), spin_release(), dentry::vnode, vxCreateSlabCache(), and vxSlabAlloc().
| void delete_dentry | ( | dentry_t * | node | ) |
Definition at line 268 of file dentry.c.
References cache_remove(), dentry::child_list, container_of, delete_dentry(), dentry_put(), get_root_cache(), kalloc(), kfree(), llist_head::next, NULL, and pos.
Referenced by delete_dentry().
|
static |
Definition at line 63 of file dentry.c.
References container_of, dentry_cache, head, rcu, and slab_free().
Referenced by dentry_put().
| void dentry_get | ( | dentry_ptr | dentry | ) |
Definition at line 68 of file dentry.c.
References atomic_t::counter, and dentry::refcount.
Referenced by vfs_umount().
| void dentry_put | ( | dentry_ptr | dentry | ) |
Definition at line 72 of file dentry.c.
References call_rcu(), atomic_t::counter, dentry_free_rcu(), dentry::rcu, and dentry::refcount.
Referenced by __attribute__(), delete_dentry(), execve(), vfs_umount(), vfs_umount_recursive(), and vxVoxmoInstall().
| kstring get_full_path_from_dentry | ( | dentry_ptr | dentry | ) |
Definition at line 356 of file dentry.c.
References kstring::c_str, dentry::name, NULL, dentry::parent, str(), str_concat(), str_concat_prefix(), and str_release().
Referenced by __attribute__(), and print_dentry_tree().
| int get_reffcount | ( | dentry_ptr | dentry | ) |
Definition at line 352 of file dentry.c.
References atomic_t::counter, and dentry::refcount.
Referenced by vfs_umount_recursive().
|
inline |
Definition at line 24 of file dentry.c.
References h, hash32(), name, and parent.
Referenced by __attribute__(), and cache_lookup().
| void print_dentry_tree | ( | dentry_t * | dentry, |
| int | depth ) |
Definition at line 300 of file dentry.c.
References fs_instance::block_dentry, kstring::c_str, dentry::child_list, container_of, atomic_t::counter, vnode::device, fs_instance::fs, vnode::fs_instance, get_full_path_from_dentry(), dentry::hash, device_id::major, device_id::minor, vnode::mountedhere, dentry::name, filesystem::name, llist_head::next, vnode::permission, pos, print_dentry_tree(), dentry::refcount, serial2_printf(), str_release(), vnode::type, dentry::vnode, VNODE_TYPE_BLK, and VNODE_TYPE_CHR.
Referenced by __attribute__(), execve(), and print_dentry_tree().
| void vxSetDentryAsRoot | ( | dentry_ptr | dentry | ) |
|
static |
Definition at line 21 of file dentry.c.
Referenced by __attribute__(), and dentry_free_rcu().
|
static |
|
static |
Definition at line 22 of file dentry.c.
Referenced by vxSetDentryAsRoot().