4 #include <hal/ahci/hba.h>
5 #include <lunaix/block.h>
6 #include <lunaix/ds/hashtable.h>
7 #include <lunaix/ds/hstr.h>
8 #include <lunaix/ds/llist.h>
10 #define VFS_NAME_MAXLEN 128
16 struct hlist_node fs_list;
18 int (*mount)(struct v_superblock* vsb, struct v_dnode* mount_point);
19 int (*unmount)(struct v_superblock* vsb);
24 struct llist_header sb_list;
28 struct filesystem* fs;
31 uint32_t (*read_capacity)(struct v_superblock* vsb);
32 uint32_t (*read_usage)(struct v_superblock* vsb);
38 struct v_inode* inode;
49 int (*write)(struct v_file* file, void* data_in, uint32_t size);
50 int (*read)(struct v_file* file, void* data_out, uint32_t size);
51 int (*readdir)(struct v_file* file, int dir_index);
52 int (*seek)(struct v_file* file, size_t offset);
53 int (*rename)(struct v_file* file, char* new_name);
54 int (*close)(struct v_file* file);
55 int (*sync)(struct v_file* file);
69 int (*open)(struct v_inode* inode, struct v_file* file);
70 int (*sync)(struct v_inode* inode);
71 int (*mkdir)(struct v_inode* inode, struct v_dnode* dnode);
72 int (*dir_lookup)(struct v_inode* inode, struct v_dnode* dnode);
79 struct v_inode* inode;
80 struct v_dnode* parent;
81 struct hlist_node hash_list;
82 struct llist_header children;
83 struct llist_header siblings;
84 struct v_superblock* super_block;
87 /* --- file system manager --- */
92 fsm_register(struct filesystem* fs);
95 fsm_get(const char* fs_name);
97 #endif /* __LUNAIX_VFS_H */