Kintsugi OS 0.5.0
x86 Monolithic OS
Loading...
Searching...
No Matches
vfs.h
Go to the documentation of this file.
1#ifndef FS_VFS_H
2#define FS_VFS_H
3#include "../kklibc/ctypes.h"
4#define VFS_PATH_MAX 256
5#define VFS_NAME_MAX 13
6
7enum {
8 VFS_OK = 0,
10 VFS_EIO = -2,
20 VFS_EBUSY = -12
21};
22
23typedef struct {
25 u8 directory, readonly;
27
28typedef struct {
29 char name[VFS_NAME_MAX];
32
33typedef struct {
34 char path[VFS_PATH_MAX];
35 u32 offset, generation;
38
39int vfs_open(const char* path, vfs_file_t* file);
40int vfs_file_read(vfs_file_t* file, void* buffer, u32 capacity);
41int vfs_file_write(vfs_file_t* file, const void* buffer, u32 size);
42int vfs_seek(vfs_file_t* file, u32 offset);
43void vfs_close(vfs_file_t* file);
44
45typedef struct {
46 int (*stat)(const char*, vfs_stat_t*);
47 int (*read)(const char*, u32, void*, u32);
48 int (*replace)(const char*, const void*, u32);
49 int (*create)(const char*, int);
50 int (*remove)(const char*, int);
51 int (*rename)(const char*, const char*);
52 int (*readdir)(const char*, u32*, vfs_dirent_t*);
53} vfs_ops_t;
54
55void vfs_mount(const vfs_ops_t* ops);
56int vfs_normalize(const char* path, char out[VFS_PATH_MAX]);
57const char* vfs_getcwd(void);
58int vfs_chdir(const char* path);
59int vfs_stat(const char* path, vfs_stat_t* stat);
60int vfs_read(const char* path, u32 offset, void* buffer, u32 capacity);
61int vfs_replace(const char* path, const void* data, u32 size);
62int vfs_write(const char* path, u32 offset, const void* data, u32 size);
63int vfs_append(const char* path, const void* data, u32 size);
64int vfs_truncate(const char* path, u32 size);
65int vfs_create(const char* path);
66int vfs_mkdir(const char* path);
67int vfs_unlink(const char* path);
68int vfs_rmdir(const char* path);
69int vfs_rename(const char* source, const char* destination);
70int vfs_copy(const char* source, const char* destination);
71/* readdir: 1 entry, 0 end, negative error. Cursor is opaque to callers. */
72int vfs_readdir(const char* path, u32* cursor, vfs_dirent_t* entry);
73const char* vfs_error(int error);
74#endif
static int create(int argc, char **argv)
Definition commands_fs.c:43
unsigned int u32
Definition ctypes.h:11
unsigned char u8
Definition ctypes.h:15
static u32 cursor
Definition memory.c:13
Definition vfs.h:28
vfs_stat_t stat
Definition vfs.h:30
Definition vfs.h:33
u32 generation
Definition vfs.h:35
u8 open
Definition vfs.h:36
Definition vfs.h:45
Definition vfs.h:23
u32 size
Definition vfs.h:24
u8 directory
Definition vfs.h:25
int vfs_replace(const char *path, const void *data, u32 size)
Definition vfs.c:166
int vfs_open(const char *path, vfs_file_t *file)
Definition vfs.c:18
void vfs_mount(const vfs_ops_t *ops)
Definition vfs.c:8
int vfs_stat(const char *path, vfs_stat_t *stat)
Definition vfs.c:136
int vfs_read(const char *path, u32 offset, void *buffer, u32 capacity)
Definition vfs.c:158
int vfs_readdir(const char *path, u32 *cursor, vfs_dirent_t *entry)
Definition vfs.c:276
int vfs_copy(const char *source, const char *destination)
Definition vfs.c:284
int vfs_unlink(const char *path)
Definition vfs.c:246
int vfs_rmdir(const char *path)
Definition vfs.c:253
#define VFS_NAME_MAX
Definition vfs.h:5
int vfs_file_read(vfs_file_t *file, void *buffer, u32 capacity)
Definition vfs.c:41
int vfs_mkdir(const char *path)
Definition vfs.c:236
#define VFS_PATH_MAX
Definition vfs.h:4
int vfs_truncate(const char *path, u32 size)
Definition vfs.c:227
void vfs_close(vfs_file_t *file)
Definition vfs.c:72
int vfs_rename(const char *source, const char *destination)
Definition vfs.c:261
int vfs_create(const char *path)
Definition vfs.c:231
const char * vfs_getcwd(void)
Definition vfs.c:14
int vfs_chdir(const char *path)
Definition vfs.c:144
int vfs_write(const char *path, u32 offset, const void *data, u32 size)
Definition vfs.c:219
int vfs_append(const char *path, const void *data, u32 size)
Definition vfs.c:223
@ VFS_EROFS
Definition vfs.h:17
@ VFS_ENOMEM
Definition vfs.h:19
@ VFS_ENOTDIR
Definition vfs.h:14
@ VFS_EISDIR
Definition vfs.h:15
@ VFS_ECORRUPT
Definition vfs.h:18
@ VFS_ENOENT
Definition vfs.h:9
@ VFS_OK
Definition vfs.h:8
@ VFS_EIO
Definition vfs.h:10
@ VFS_EINVAL
Definition vfs.h:11
@ VFS_ENOSPC
Definition vfs.h:12
@ VFS_EEXIST
Definition vfs.h:13
@ VFS_ENOTEMPTY
Definition vfs.h:16
@ VFS_EBUSY
Definition vfs.h:20
int vfs_file_write(vfs_file_t *file, const void *buffer, u32 size)
Definition vfs.c:52
int vfs_seek(vfs_file_t *file, u32 offset)
Definition vfs.c:64
const char * vfs_error(int error)
Definition vfs.c:313
int vfs_normalize(const char *path, char out[VFS_PATH_MAX])
Definition vfs.c:78