PatchworkOS
Loading...
Searching...
No Matches
dentry.h
Go to the documentation of this file.
1#pragma once
2
3#include <kernel/fs/path.h>
4#include <kernel/sync/mutex.h>
5#include <kernel/utils/map.h>
6#include <kernel/utils/ref.h>
7
8#include <stdatomic.h>
9#include <stdint.h>
10#include <sys/io.h>
11#include <sys/list.h>
12
13typedef struct dentry dentry_t;
14typedef struct dentry_ops dentry_ops_t;
15typedef struct inode inode_t;
16typedef struct superblock superblock_t;
17
34
43#define DENTRY_IS_ROOT(dentry) (dentry->parent == dentry)
44
49typedef enum
50{
61
69typedef struct dentry_ops
70{
75 void (*cleanup)(dentry_t* entry);
77
116
135dentry_t* dentry_new(superblock_t* superblock, dentry_t* parent, const char* name);
136
146
152void dentry_inc_mount_count(dentry_t* dentry);
153
159void dentry_dec_mount_count(dentry_t* dentry);
160
171 path_flags_t flags);
172
#define MAX_NAME
Maximum length of names.
Definition MAX_NAME.h:11
void dentry_dec_mount_count(dentry_t *dentry)
Decrements the mount count of a dentry.
Definition dentry.c:133
void dentry_inc_mount_count(dentry_t *dentry)
Increments the mount count of a dentry.
Definition dentry.c:128
dentry_t * dentry_new(superblock_t *superblock, dentry_t *parent, const char *name)
Create a new dentry.
Definition dentry.c:51
uint64_t dentry_id_t
Dentry ID type.
Definition dentry.h:33
uint64_t dentry_make_positive(dentry_t *dentry, inode_t *inode)
Make a dentry positive by associating it with an inode.
Definition dentry.c:101
dentry_flags_t
Flags for a dentry.
Definition dentry.h:50
uint64_t dentry_generic_getdents(dentry_t *dentry, dirent_t *buffer, uint64_t count, uint64_t *offset, path_flags_t flags)
Helper function for a basic getdents.
Definition dentry.c:195
@ DENTRY_NONE
No flags.
Definition dentry.h:51
@ DENTRY_NEGATIVE
Definition dentry.h:59
path_flags_t
Path flags.
Definition path.h:83
uint64_t getdents(fd_t fd, dirent_t *buffer, uint64_t count)
System call for reading directory entires.
Definition getdents.c:9
EFI_PHYSICAL_ADDRESS buffer
Definition mem.c:15
static atomic_long count
Definition main.c:9
__UINT64_TYPE__ uint64_t
Definition stdint.h:17
Dentry operations structure.
Definition dentry.h:70
Directory entry structure.
Definition dentry.h:83
list_t children
Definition dentry.h:90
inode_t * inode
Definition dentry.h:87
atomic_uint64_t mountCount
Definition dentry.h:114
mutex_t childrenMutex
Definition dentry.h:91
ref_t ref
Definition dentry.h:84
dentry_id_t id
Definition dentry.h:85
const dentry_ops_t * ops
Definition dentry.h:93
dentry_t * parent
Definition dentry.h:88
superblock_t * superblock
Definition dentry.h:92
list_entry_t siblingEntry
Definition dentry.h:89
_Atomic(dentry_flags_t) flags
map_entry_t mapEntry
Definition dentry.h:95
Directory entry struct.
Definition io.h:424
Inode structure.
Definition inode.h:54
A entry in a doubly linked list.
Definition list.h:38
A doubly linked list.
Definition list.h:51
Map entry structure.
Definition map.h:57
Mutex structure.
Definition mutex.h:39
Reference counting structure.
Definition ref.h:30
Superblock structure.
Definition superblock.h:44