+int
+__twifs_mount(struct v_superblock* vsb, struct v_dnode* mount_point)
+{
+ vsb->dev = 1;
+ struct v_inode* inode =
+ vfs_i_alloc(vsb, fs_root->ino_id, __twifs_init_inode, fs_root);
+ if (!inode) {
+ return ENOMEM;
+ }
+ vfs_assign_inode(mount_point, inode);
+ return 0;
+}
+
+int
+__twifs_fwrite(struct v_inode* inode, void* buffer, size_t len, size_t fpos)
+{
+ struct twifs_node* twi_node = (struct twifs_node*)inode->data;
+ if (!twi_node || !twi_node->ops.write) {
+ return ENOTSUP;
+ }
+ return twi_node->ops.write(inode, buffer, len, fpos);
+}
+
+int
+__twifs_fread(struct v_inode* inode, void* buffer, size_t len, size_t fpos)
+{
+ struct twifs_node* twi_node = (struct twifs_node*)inode->data;
+ if (!twi_node || !twi_node->ops.read) {
+ return ENOTSUP;
+ }
+ return twi_node->ops.read(inode, buffer, len, fpos);
+}
+