+__twifs_new_node(struct twifs_node* parent, const char* name, int name_len)
+{
+ struct twifs_node* node = cake_grab(twi_pile);
+ memset(node, 0, sizeof(*node));
+
+ node->name = HSTR(name, name_len);
+ hstr_rehash(&node->name, HSTR_FULL_HASH);
+ llist_init_head(&node->children);
+
+ if (parent) {
+ llist_append(&parent->children, &node->siblings);
+ }
+
+ return node;
+}
+
+struct twifs_node*
+twifs_file_node(struct twifs_node* parent, const char* name, int name_len)
+{
+ struct twifs_node* twi_node = __twifs_new_node(parent, name, name_len);
+ twi_node->itype = VFS_INODE_TYPE_FILE;
+
+ struct v_inode* twi_inode = __twifs_create_inode(twi_node);
+ twi_node->inode = twi_inode;
+
+ return twi_inode;
+}
+
+struct twifs_node*
+twifs_dir_node(struct twifs_node* parent, const char* name, int name_len)