ApertureOS
priv_filesystem.h
Go to the documentation of this file.
1 #ifndef _PRIV_FILESYSTEM_MANAGER_H_
2 #define _PRIV_FILESYSTEM_MANAGER_H_
3 
4 #include "types.h"
5 #include "managers.h"
6 #include "drivers.h"
7 
8 #include "filesystem.h"
9 
10 #define MAX_OPEN_FILES 0x10000000
11 #define MAX_OPEN_DIRS 0x10000000
12 
13 #define EXTRACT_ID(n) (n & 0xFFFFFFFF)
14 
15 typedef struct FileDescriptor_T FileDescriptor;
16 
17 typedef struct Filesystem_Driver_T
18 {
19  uint32_t(*_H_Initialize)(FileDescriptor *desc);
20  uint32_t(*_H_Filesystem_OpenFile)(FileDescriptor *desc, const char *filename, int flags, int perms);
21  uint8_t(*_H_Filesystem_ReadFile)(FileDescriptor *desc, UID id, uint8_t *buffer, size_t size);
22  uint64_t(*_H_Filesystem_SeekFile)(FileDescriptor *desc, uint32_t fd, uint64_t offset, int whence);
23  uint8_t(*_H_Filesystem_CloseFile)(FileDescriptor *desc, uint32_t fd);
24  uint8_t(*_H_Filesystem_DeleteFile)(FileDescriptor *desc, const char *file);
25  uint8_t(*_H_Filesystem_RenameFile)(FileDescriptor *desc, const char *orig_name, const char *new_name);
26 
27  uint32_t(*_H_Filesystem_OpenDir)(FileDescriptor *desc, const char *filename);
28  uint8_t(*_H_Filesystem_ReadDir)(FileDescriptor *desc, uint32_t dd, Filesystem_DirEntry *dir);
29  uint8_t(*_H_Filesystem_CloseDir)(FileDescriptor *desc, uint32_t fd);
30  uint8_t(*_H_Filesystem_MakeDir)(FileDescriptor *desc, const char *path);
31  uint8_t(*_H_Filesystem_DeleteDir)(FileDescriptor *desc, const char *path);
32 
34  struct Filesystem_Driver_T *next;
36 
38 {
39  char *path;
43  void *data;
45  FileDescriptor *next;
46 };
47 
48 #endif
Definition: filesystem.h:36
FileDescriptor * next
Definition: priv_filesystem.h:45
UID id
Definition: priv_filesystem.h:44
Definition: priv_filesystem.h:17
WriteFunc write
Definition: priv_filesystem.h:41
uint64_t UID
Definition: types.h:8
ReadFunc read
Definition: priv_filesystem.h:40
uint8_t(* ReadFunc)(uint64_t, uint32_t, uint16_t *)
Definition: filesystem.h:10
EXT2_FD * fd
Definition: ext2.c:6
struct Filesystem_Driver_T * next
Definition: priv_filesystem.h:34
SupportedFilesystems
Definition: filesystem.h:15
void * data
Definition: priv_filesystem.h:43
uint8_t(* WriteFunc)(uint64_t, uint32_t, uint16_t *)
Definition: filesystem.h:13
SupportedFilesystems filesystem
Definition: priv_filesystem.h:33
Definition: priv_filesystem.h:37
char * path
Definition: priv_filesystem.h:39
Filesystem_Driver * driver
Definition: priv_filesystem.h:42