From a0721b4caa79b81e021678089fde0b8467daa1cd Mon Sep 17 00:00:00 2001 From: Franklin Wei Date: Mon, 2 Mar 2015 21:37:44 -0500 Subject: Virtual filesystem WIP! --- include/kernel/vfs.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 include/kernel/vfs.h (limited to 'include/kernel/vfs.h') diff --git a/include/kernel/vfs.h b/include/kernel/vfs.h new file mode 100644 index 0000000..4977665 --- /dev/null +++ b/include/kernel/vfs.h @@ -0,0 +1,48 @@ +#include + +#define VFS_DIR 0 +#define VFS_REG 1 +#define VFS_SPEC 2 + +#define VFS_TYPEMASK 0x3 + +struct vfs_node { + unsigned int flags; + char *name; + uint64_t file_len; + unsigned char *contents; + struct vfs_node *parent; + struct vfs_node *next; + struct vfs_node *child; +}; + +#define DT_BLK (1<<0) +#define DT_CHR (1<<1) +#define DT_DIR (1<<2) +#define DT_FIFO (1<<3) +#define DT_LNK (1<<4) +#define DT_REG (1<<5) +#define DT_SOCK (1<<6) +#define DT_UNKNOWN (1<<7) + +struct dirent { + unsigned char d_type; + char d_name[256]; +}; + +/* initializes an empty filesystem on the heap */ +struct vfs_node *vfs_init(void); + +/* creates a new, empty directory UNDER a directory node */ +int vfs_mkdir(struct vfs_node*, const char *name); + +/* creates a new, empty, regular file under a directory node */ +int vfs_creat(struct vfs_node*, const char *name); + +typedef struct DIR { + struct vfs_node *node; +} DIR; + +DIR *vfs_opendir(struct vfs_node*); + +struct dirent *vfs_readdir(DIR *dirp); -- cgit v1.1