refactor: decouple the executable file implementations with execve functionality.
[lunaix-os.git] / lunaix-os / includes / lunaix / fs.h
index 5a5cb79514e51d66198a4f13e0ce040630b8f544..5fbcc9083791607d8448cdaa53c7d1019cd90385 100644 (file)
@@ -9,7 +9,6 @@
 #include <lunaix/ds/llist.h>
 #include <lunaix/ds/lru.h>
 #include <lunaix/ds/mutex.h>
-#include <lunaix/process.h>
 #include <lunaix/status.h>
 #include <stdatomic.h>
 
 #define VFS_IFFILE 0x2
 #define VFS_IFSEQDEV 0x4
 #define VFS_IFVOLDEV 0x8
-#define VFS_IFSYMLINK 0x16
+#define VFS_IFSYMLINK 0x10
 
+// Walk, mkdir if component encountered is non-exists.
 #define VFS_WALK_MKPARENT 0x1
+
+// Walk, relative to current FS.
 #define VFS_WALK_FSRELATIVE 0x2
+
+/*
+    Terminate the walk on the immediate parent,
+    name of child (last component) is returned through `component`
+*/
 #define VFS_WALK_PARENT 0x4
+
+// Do not follow the symbolic link
 #define VFS_WALK_NOFOLLOW 0x8
 
 #define VFS_HASHTABLE_BITS 10
@@ -36,9 +45,6 @@
 
 #define FSTYPE_ROFS 0x1
 
-#define DO_STATUS(errno) SYSCALL_ESTATUS(__current->k_status = errno)
-#define DO_STATUS_OR_RETURN(errno) ({ errno < 0 ? DO_STATUS(errno) : errno; })
-
 #define TEST_FD(fd) (fd >= 0 && fd < VFS_MAX_FD)
 
 #define VFS_VALID_CHAR(chr)                                                    \
@@ -95,7 +101,6 @@ struct v_superblock
     struct device* dev;
     struct v_dnode* root;
     struct filesystem* fs;
-    u32_t iobuf_size;
     struct hbucket* i_cache;
     void* data;
     struct
@@ -401,6 +406,9 @@ vfs_get_dtype(int itype);
 void
 vfs_ref_dnode(struct v_dnode* dnode);
 
+void
+vfs_ref_file(struct v_file* file);
+
 void
 vfs_unref_dnode(struct v_dnode* dnode);