X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/5fc669295655ec0eea7722aa4a48921dc6b700ec..f4c2f90eddf42f1cc73a2a12ff1435cd4357fa60:/lunaix-os/includes/lunaix/fs/twifs.h?ds=sidebyside diff --git a/lunaix-os/includes/lunaix/fs/twifs.h b/lunaix-os/includes/lunaix/fs/twifs.h index 48b35b9..2ee5390 100644 --- a/lunaix-os/includes/lunaix/fs/twifs.h +++ b/lunaix-os/includes/lunaix/fs/twifs.h @@ -2,23 +2,54 @@ #define __LUNAIX_TWIFS_H #include +#include +#include struct twifs_node { struct hstr name; - uint32_t itype; + inode_t ino_id; + void* data; + u32_t itype; + char name_val[VFS_NAME_MAXLEN]; struct llist_header children; struct llist_header siblings; - struct v_file_ops fops; + struct + { + int (*write)(struct v_inode* inode, + void* buffer, + size_t len, + size_t fpos); + int (*read)(struct v_inode* inode, + void* buffer, + size_t len, + size_t fpos); + } ops; }; +#define twinode_getdata(inode, type) \ + ({ \ + struct twifs_node* twinode = (struct twifs_node*)(inode)->data; \ + assert(twinode); \ + (type) twinode->data; \ + }) + void twifs_init(); struct twifs_node* -twifs_child_node(struct twifs_node* parent, const char* name, int name_len); +twifs_file_node_vargs(struct twifs_node* parent, const char* fmt, va_list args); + +struct twifs_node* +twifs_file_node(struct twifs_node* parent, const char* fmt, ...); struct twifs_node* -twifs_toplevel_node(const char* name, int name_len); +twifs_dir_node(struct twifs_node* parent, const char* fmt, ...); + +int +twifs_rm_node(struct twifs_node* node); + +struct twimap* +twifs_mapping(struct twifs_node* parent, void* data, const char* fmt, ...); #endif /* __LUNAIX_TWIFS_H */