aboutsummaryrefslogtreecommitdiff
path: root/include/kernel/vfs.h
diff options
context:
space:
mode:
authorFranklin Wei <frankhwei536@gmail.com>2015-03-02 21:37:44 -0500
committerFranklin Wei <frankhwei536@gmail.com>2015-03-02 21:37:44 -0500
commita0721b4caa79b81e021678089fde0b8467daa1cd (patch)
tree56af15c29704cc4c6738345ccd6c9db3782fd8d1 /include/kernel/vfs.h
parent46e94578765d3d2f03b83421d752e5dfc3e56d34 (diff)
downloadkappa-master.zip
kappa-master.tar.gz
kappa-master.tar.bz2
kappa-master.tar.xz
Virtual filesystem WIP!HEADmaster
Diffstat (limited to '')
-rw-r--r--include/kernel/vfs.h48
1 files changed, 48 insertions, 0 deletions
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 <stdint.h>
+
+#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);