1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #ifndef VFS_H
30 #define VFS_H
31
32 #include "../public/vfs.h"
33 #include "acl.h"
34
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38
39 typedef struct SysVFSDir {
40 DIR *dir;
41 struct dirent *cur;
42 } SysVFSDir;
43
44 enum VFSAioOp {
45 VFS_AIO_READ =
0,
46 VFS_AIO_WRITE
47 };
48 typedef enum VFSAioOp VFSAioOp;
49
50 int vfs_init();
51
52 typedef int(*vfs_op_f)(VFSContext *,
char *);
53 typedef int(*sys_op_f)(VFSContext *,
char *, SysACL *);
54 int vfs_path_op(VFSContext *ctx,
char *path, vfs_op_f op,
uint32_t access);
55
56 SYS_FILE sys_vfs_open(VFSContext *ctx,
char *path,
int oflags);
57 int sys_vfs_stat(VFSContext *ctx,
char *path,
struct stat *buf);
58 int sys_vfs_fstat(VFSContext *ctx,
SYS_FILE fd,
struct stat *buf);
59 VFS_DIR sys_vfs_opendir(VFSContext *ctx,
char *path);
60 int sys_vfs_mkdir(VFSContext *ctx,
char *path);
61 int sys_vfs_unlink(VFSContext *ctx,
char *path);
62
63 int sys_path_op(VFSContext *ctx,
char *path, sys_op_f op);
64 int sys_acl_check(VFSContext *ctx,
uint32_t access_mask, SysACL *externacl);
65 void sys_set_error_status(VFSContext *ctx);
66
67 ssize_t sys_file_read(
SYS_FILE fd,
void *buf,
size_t nbyte);
68 ssize_t sys_file_write(
SYS_FILE fd,
const void *buf,
size_t nbyte);
69 ssize_t sys_file_pread(
SYS_FILE fd,
void *buf,
size_t nbyte,
off_t offset);
70 ssize_t sys_file_pwrite(
SYS_FILE fd,
const void *buf,
size_t nbyte,
off_t offset);
71 off_t sys_file_seek(
SYS_FILE fd,
off_t offset,
int whence);
72 void sys_file_close(
SYS_FILE fd);
73 int sys_file_aioread(aiocb_s *aiocb);
74 int sys_file_aiowrite(aiocb_s *aiocb);
75
76 int sys_dir_read(
VFS_DIR dir,
VFS_ENTRY *entry,
int getstat);
77 void sys_dir_close(
VFS_DIR dir);
78
79 int sys_mkdir(VFSContext *ctx,
char *path, SysACL *sysacl);
80 int sys_unlink(VFSContext *ctx,
char *path, SysACL *sysacl);
81
82 void vfs_queue_aio(aiocb_s *aiocb, VFSAioOp op);
83
84 #ifdef __cplusplus
85 }
86 #endif
87
88 #endif
89
90