XenevaOS
Loading...
Searching...
No Matches
vfs.h
Go to the documentation of this file.
32#ifndef __VFS_H__
33#define __VFS_H__
34
35#include <stdint.h>
36#include <list.h>
37#include <aurora.h>
38#include <Cred/group.h>
39#include <Cred/user.h>
40#include <Sync/poll.h>
41
42#define FS_FLAG_DIRECTORY (1 << 1) //temporary/freeable
43#define FS_FLAG_GENERAL (1 << 2) //tempoary/freeable
44#define FS_FLAG_DEVICE (1 << 3) //permanent/non-freeable
45#define FS_FLAG_DELETED (1 << 4) //state
46#define FS_FLAG_INVALID (1 << 5) //state
47#define FS_FLAG_FILE_SYSTEM (1 << 6) //parment/non-freeable
48#define FS_FLAG_PIPE (1 << 7) //temporary/freeable
49#define FS_FLAG_TTY (1 << 8) //temporary/freeable with count
50#define FS_FLAG_SOCKET (1 << 9) //temporary/freeable
51#define FS_FLAG_FILE_SYSTEM_GENERAL (1 << 10) //general file system
52#define FS_FLAG_CACHED (1 << 11) //file is being cached
53
55#define S_ISUID 04000
56#define S_ISGID 02000
57#define S_ISVTX 01000
58#define S_IRWXU 00700
59#define S_IRUSR 00400
60#define S_IWUSR 00200
61#define S_IXUSR 00100
62#define S_IRWXG 00070
63#define S_IRWXO 00007
64#define S_IALLUGO 07777
65
66#define FS_STATUS_FOUND 0x1
67#define FS_STATUS_NF 0x0
68
69#define VFS_MEDIA_TYPE_AHCI 0x1
70#define VFS_MEDIA_TYPE_IDE 0x2
71#define VFS_MEDIA_TYPE_OTHER 0x3
72
73/* file open modes*/
74#define FILE_OPEN_READ_ONLY (1 << 1)
75#define FILE_OPEN_WRITE (1 << 2)
76#define FILE_OPEN_CREAT (1 << 3)
77
78struct __VFS_NODE__;
79
80#ifdef ARCH_X64
81#pragma pack(push, 1)
82#endif
91#ifdef ARCH_X64
92#pragma pack(pop)
93#endif
94
95typedef struct __VFS_NODE__* (*open_callback)(struct __VFS_NODE__* node, char* path);
97 struct __VFS_NODE__* file,
98 uint64_t* buffer,
99 uint32_t length);
101 struct __VFS_NODE__* file,
102 uint64_t* buffer);
104 struct __VFS_NODE__* file,
105 uint64_t* buffer,
106 uint32_t length);
107typedef struct __VFS_NODE__* (*create_dir_callback)(struct __VFS_NODE__* node, char* dirname);
108typedef struct __VFS_NODE__* (*create_file_callback)(struct __VFS_NODE__* node, char* filename);
109typedef int (*remove_dir_callback)(struct __VFS_NODE__* node, struct __VFS_NODE__* file);
110typedef int (*remove_file_callback)(struct __VFS_NODE__* node, struct __VFS_NODE__* file);
111typedef int (*close_callback)(struct __VFS_NODE__* node, struct __VFS_NODE__* file);
112typedef int (*iocontrol_callback)(struct __VFS_NODE__* file, int code, void* arg);
113typedef struct __VFS_NODE__* (*opendir_callback)(struct __VFS_NODE__* fs, char* dirname);
114typedef int (*readdir_callback)(struct __VFS_NODE__* fs,
115 struct __VFS_NODE__* dir,
116 AuDirectoryEntry* dirent);
118 struct __VFS_NODE__* file,
119 uint64_t fs_block);
120typedef size_t (*fs_getblockfor)(struct __VFS_NODE__* fs,
121 struct __VFS_NODE__* file,
123typedef int (*poll_callback)(struct __VFS_NODE__* fs,
124 struct __VFS_NODE__* file,
126typedef int (*setattr_callback)(struct __VFS_NODE__* fs, struct __VFS_NODE__* file);
127
128//#pragma pack(push,1)
165//#pragma pack(pop)
166
167//#pragma pack(push,1)
178//#pragma pack(pop)
179
191
201
206extern void AuVFSInitialise();
207
212extern char* AuVFSReserveMountPointLetter();
213
219
229
236
243
251
262 uint64_t* buffer,
263 uint32_t length);
264
273
281
289
296extern int AuVFSRemoveFile(AuVFSNode* fsys, AuVFSNode* file);
297
304extern int AuVFSRemoveDir(AuVFSNode* fsys, AuVFSNode* file);
305
315
322
332
341
348
349#endif
#define AU_EXTERN
Definition aurora.h:54
#define AU_EXPORT
Definition aurora.h:40
uint64_t size_t
Definition stdint.h:104
unsigned int uint32_t
Definition acefiex.h:163
unsigned char uint8_t
Definition acefiex.h:161
COMPILER_DEPENDENT_UINT64 uint64_t
Definition acefiex.h:165
unsigned short int uint16_t
Definition acefiex.h:162
uint32_t * table
Definition codec_8859.c:24
size_t size_t offset
Definition drm_bridge.h:1299
#define GID_NUM
Definition group.h:38
void AuVFSFind(void)
void int node
Definition kthread.h:31
Definition poll.h:61
Definition vfs.h:83
int time
Definition vfs.h:88
int size
Definition vfs.h:86
int index
Definition vfs.h:85
char filename[32]
Definition vfs.h:84
int date
Definition vfs.h:87
uint8_t flags
Definition vfs.h:89
Definition vfs.h:168
uint32_t group_id
Definition vfs.h:174
uint32_t start_block
Definition vfs.h:172
uint32_t current_block
Definition vfs.h:171
uint32_t num_links
Definition vfs.h:175
uint8_t eof
Definition vfs.h:176
uint32_t user_id
Definition vfs.h:173
size_t size
Definition vfs.h:170
uint8_t filemode
Definition vfs.h:169
Definition vfs.h:180
uint8_t uchar_1
Definition vfs.h:182
uint32_t uint_1
Definition vfs.h:186
int syscall_magic
Definition vfs.h:181
uint16_t ushort_2
Definition vfs.h:185
uint32_t uint_2
Definition vfs.h:187
uint64_t ulong_2
Definition vfs.h:189
uint8_t uchar_2
Definition vfs.h:183
uint64_t ulong_1
Definition vfs.h:188
uint16_t ushort_1
Definition vfs.h:184
AuVFSContainer – is a container which contains list of nodes/directories another directory will point...
Definition vfs.h:198
list_t * childs
Definition vfs.h:199
Definition vfs.h:129
write_callback write
Definition vfs.h:151
create_dir_callback create_dir
Definition vfs.h:152
read_callback read
Definition vfs.h:150
read_block_callback read_block
Definition vfs.h:157
remove_file_callback remove_file
Definition vfs.h:155
iocontrol_callback iocontrol
Definition vfs.h:161
void * device
Definition vfs.h:142
poll_callback poll
Definition vfs.h:162
readdir_callback read_dir
Definition vfs.h:158
fs_getblockfor get_blockfor
Definition vfs.h:160
opendir_callback opendir
Definition vfs.h:149
uint32_t size
Definition vfs.h:131
char filename[32]
Definition vfs.h:130
void * private_data
Definition vfs.h:143
uint64_t last_resolved_index
Definition vfs.h:145
get_disk_block get_disk_block
Definition vfs.h:159
UID_NUM uid
Definition vfs.h:139
open_callback open
Definition vfs.h:148
uint32_t first_block
Definition vfs.h:135
uint64_t current
Definition vfs.h:136
uint32_t last_resolved_cluster
Definition vfs.h:146
uint8_t eof
Definition vfs.h:132
uint8_t status
Definition vfs.h:138
uint32_t parent_block
Definition vfs.h:134
setattr_callback setattr
Definition vfs.h:163
create_file_callback create_file
Definition vfs.h:153
uint32_t pos
Definition vfs.h:133
uint16_t flags
Definition vfs.h:137
close_callback close
Definition vfs.h:156
remove_dir_callback remove_dir
Definition vfs.h:154
uint16_t fileCopyCount
Definition vfs.h:144
GID_NUM gid
Definition vfs.h:140
uint16_t mode
Definition vfs.h:141
Definition list.h:46
Definition fs.h:142
Definition path.h:8
Definition crypto.c:514
#define UID_NUM
Definition user.h:35
int(* readdir_callback)(struct __VFS_NODE__ *fs, struct __VFS_NODE__ *dir, AuDirectoryEntry *dirent)
Definition vfs.h:114
AU_EXTERN AU_EXPORT size_t AuVFSNodeRead(AuVFSNode *node, AuVFSNode *file, uint64_t *buffer, uint32_t length)
AuVFSNodeRead – read from file system.
Definition vfs.cpp:218
int(* poll_callback)(struct __VFS_NODE__ *fs, struct __VFS_NODE__ *file, AuPollTable *table)
Definition vfs.h:123
size_t(* write_callback)(struct __VFS_NODE__ *node, struct __VFS_NODE__ *file, uint64_t *buffer, uint32_t length)
Definition vfs.h:103
AU_EXTERN AU_EXPORT AuVFSNode * AuVFSOpen(char *path)
AuVFSOpen – Opens a file.
Definition vfs.cpp:154
size_t(* fs_getblockfor)(struct __VFS_NODE__ *fs, struct __VFS_NODE__ *file, uint64_t offset)
Definition vfs.h:120
AU_EXTERN AU_EXPORT void AuVFSNodeWrite(AuVFSNode *node, AuVFSNode *file, uint64_t *buffer, uint32_t length)
AuVFSNodeWrite – write to file system.
Definition vfs.cpp:233
struct _FileControl_ AuFileIOControl
int AuVFSRemoveDir(AuVFSNode *fsys, AuVFSNode *file)
AuVFSRemoveFile –remove a file from a file system.
Definition vfs.cpp:308
size_t(* read_block_callback)(struct __VFS_NODE__ *node, struct __VFS_NODE__ *file, uint64_t *buffer)
Definition vfs.h:100
int(* setattr_callback)(struct __VFS_NODE__ *fs, struct __VFS_NODE__ *file)
Definition vfs.h:126
AU_EXTERN AU_EXPORT int AuVFSPoll(AuVFSNode *file, AuPollTable *pt)
AuVFSPoll – poll callback interface.
Definition vfs.c:445
AU_EXTERN AU_EXPORT int AuVFSSetCred(AuVFSNode *node, UID_NUM uid, GID_NUM gid)
AuVFSSetCred – set gid/uid value for a file.
Definition vfs.c:432
struct __VFS_NODE__ AuVFSNode
uint32_t(* get_disk_block)(struct __VFS_NODE__ *fs, struct __VFS_NODE__ *file, uint64_t fs_block)
Definition vfs.h:117
struct __VFS_NODE__ *(* opendir_callback)(struct __VFS_NODE__ *fs, char *dirname)
Definition vfs.h:113
int AuVFSRemoveFile(AuVFSNode *fsys, AuVFSNode *file)
AuVFSRemoveFile –remove a file from a file system.
Definition vfs.cpp:288
AU_EXTERN AU_EXPORT void AuVFSAddFileSystem(AuVFSNode *node)
AuVFSAddFileSystem – adds a file system to the vfs list.
Definition vfs.cpp:128
int(* close_callback)(struct __VFS_NODE__ *node, struct __VFS_NODE__ *file)
Definition vfs.h:111
struct __VFS_NODE__ *(* create_file_callback)(struct __VFS_NODE__ *node, char *filename)
Definition vfs.h:108
int(* remove_dir_callback)(struct __VFS_NODE__ *node, struct __VFS_NODE__ *file)
Definition vfs.h:109
struct __VFS_NODE__ *(* create_dir_callback)(struct __VFS_NODE__ *node, char *dirname)
Definition vfs.h:107
AU_EXTERN AU_EXPORT size_t AuVFSGetBlockFor(AuVFSNode *node, AuVFSNode *file, uint64_t offset)
AuVFSGetBlockFor – returns a block number for certain byte offset of file.
Definition vfs.cpp:360
AU_EXTERN AU_EXPORT AuVFSNode * AuVFSCreateFile(AuVFSNode *fsys, char *filename)
AuVFSCreateFile – create a new file.
Definition vfs.cpp:274
AU_EXTERN AU_EXPORT void AuVFSRegisterRoot(AuVFSNode *fs)
AuVFSRegisterRoot – register the root file system.
Definition vfs.cpp:143
struct _AuFileStatus_ AuFileStatus
size_t(* read_callback)(struct __VFS_NODE__ *node, struct __VFS_NODE__ *file, uint64_t *buffer, uint32_t length)
Definition vfs.h:96
struct _AuDirectoryEnty_ AuDirectoryEntry
struct __VFS_NODE__ *(* open_callback)(struct __VFS_NODE__ *node, char *path)
Definition vfs.h:95
AU_EXTERN AU_EXPORT int AuVFSNodeIOControl(AuVFSNode *node, int code, void *arg)
AuVFSNodeIOControl – Calls node's iocontrol pointer.
Definition vfs.cpp:203
struct __VFS_Container__ AuVFSContainer
AuVFSContainer – is a container which contains list of nodes/directories another directory will point...
AU_EXTERN AU_EXPORT void AuVFSNodeClose(AuVFSNode *node, AuVFSNode *file)
AuVFSNodeClose – close a file system or file.
Definition vfs.cpp:325
AU_EXTERN AU_EXPORT AuVFSNode * AuVFSCreateDir(AuVFSNode *fsys, char *dirname)
AuVFSCreateDir – creates a new dir.
Definition vfs.cpp:260
char * AuVFSReserveMountPointLetter()
AuVFSReserveMountPointLetter – reserve a letter to mount a file system.
Definition vfs.cpp:69
AU_EXTERN AU_EXPORT size_t AuVFSNodeReadBlock(AuVFSNode *node, AuVFSNode *file, uint64_t *buffer)
AuVFSNodeReadBlock – read a block size data from file system.
Definition vfs.cpp:246
void AuVFSInitialise()
AuVFSInitialise – initialise the virtual file system.
Definition vfs.cpp:48
int(* remove_file_callback)(struct __VFS_NODE__ *node, struct __VFS_NODE__ *file)
Definition vfs.h:110
int(* iocontrol_callback)(struct __VFS_NODE__ *file, int code, void *arg)
Definition vfs.h:112