Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
dentry.h
Go to the documentation of this file.
1#ifndef __VFS__DENTRY_H__
2#define __VFS__DENTRY_H__
4#include "llist.h"
5#include "vfs/cache.h"
6#include "vfs/rcu.h"
7#include <string.h>
8#include <type.h>
9#include <vector.h>
10
11#define DENTRY_PINNED (1 << 0)
12#define DENTRY_NEGATIVE (1 << 1)
13#define DENTRY_MOUNTPOINT (1 << 2)
14
15#ifdef __cplusplus
16extern "C" {
17#endif
18
19typedef struct dentry dentry_t;
20typedef struct dentry* dentry_ptr;
21
22struct vnode;
23
24struct hlist_node;
25struct hlist_head;
26struct dentry {
27 struct llist_head child_list; /* list anak-anak direktori ini */
28 struct llist_head siblings __attribute__((aligned(64))); /* posisi kita di child_list parent */
33 struct vnode* vnode;
35 struct hlist_node hash_node; /* masuk dcache hash table */
36 struct rcu_head rcu;
37} __attribute__((aligned(64)));
38
57int vxnamei(const char* path, dentry_ptr* out);
58
59
75
78
79enum {
82};
83
110 uint8_t flag);
111
114
115typedef struct vnode* vnode_ptr_t;
117
119
122void delete_dentry(dentry_t* node);
123
125
126void
127print_dentry_tree(dentry_t* node, int depth);
128
130
131#ifdef __cplusplus
132}
133#endif
134
135#endif // __VFS__DENTRY_H__
kstring name
Definition dentry.h:5
int get_reffcount(dentry_ptr dentry)
Definition dentry.c:352
void vxAttachDentryToVnode(dentry_ptr dentry, vnode_ptr_t vnode)
enum @135076040231377033256012312121040064037363103241 __attribute__
void dentry_get(dentry_ptr dentry)
Definition dentry.c:68
uint32_t hash_dentry(const char *name, dentry_ptr parent)
Definition dentry.c:24
struct dentry * dentry_ptr
Definition dentry.h:20
dentry_ptr parent
Definition dentry.h:7
void vxFreeDentryWithChildren(dentry_ptr dentry)
void print_dentry_tree(dentry_t *node, int depth)
Definition dentry.c:300
void delete_dentry(dentry_t *node)
Definition dentry.c:268
void dentry_put(dentry_ptr dentry)
Definition dentry.c:72
void vxSetDentryAsRoot(dentry_ptr dentry)
Definition dentry.c:84
void vxFreeDentry(dentry_ptr dentry)
int resolve_dentry(char *path, dentry_ptr parent, dentry_ptr *out, uint8_t flag)
Resolves a path to a directory entry (dentry) with configurable start point and strictness.
kstring get_full_path_from_dentry(dentry_ptr dentry)
Definition dentry.c:356
struct vnode * vnode_ptr_t
Definition dentry.h:115
int vxnamei(const char *path, dentry_ptr *out)
Resolves a file path to a directory entry (dentry).
struct dentry dentry_t
Definition dentry.h:19
dentry_ptr get_root_dentry()
@ RESOLVE_LAST_ENTRY
Definition dentry.h:80
@ CREATE_MISSING_ENTRY
Definition dentry.h:81
struct hlist_node hash_node
Definition dentry.h:35
kstring name
Definition dentry.h:32
struct rcu_head rcu
Definition dentry.h:36
dentry_ptr parent
Definition dentry.h:34
struct llist_head siblings __attribute__((aligned(64)))
uint32_t hash
Definition dentry.h:30
struct vnode * vnode
Definition dentry.h:33
atomic_t refcount
Definition dentry.h:29
uint32_t flags
Definition dentry.h:31
struct llist_head child_list
Definition dentry.h:27
Definition rcu.h:6
Definition vnode.h:59
unsigned int uint32_t
Definition type.h:19
#define KERNEL_API
Definition type.h:93
unsigned char uint8_t
Definition type.h:7
kstring path
Definition voxmo.h:7