static int ramfs_remove_node(struct ramfs_node *dnp, struct ramfs_node *np) { struct ramfs_node *prev; if (dnp->rn_child == NULL) return -EBUSY; RAMFS_LOCK(); /* Unlink from the directory list */ if (dnp->rn_child == np) { dnp->rn_child = np->rn_next; } else { for (prev = dnp->rn_child; prev->rn_next != np; prev = prev->rn_next) { if (prev->rn_next == NULL) { RAMFS_UNLOCK(); return -ENOENT; } } prev->rn_next = np->rn_next; } ramfs_free_node(np); RAMFS_UNLOCK(); return 0; }
static s32_t ramfs_unmount(struct mount_t * m) { ramfs_free_node(m->m_root->v_data); m->m_data = NULL; return 0; }
static int ramfs_remove_node(struct ramfs_node *dnp, struct ramfs_node *np) { struct ramfs_node *prev; if (dnp->rn_child == NULL) return EBUSY; mutex_lock(&ramfs_lock); /* Unlink from the directory list */ if (dnp->rn_child == np) { dnp->rn_child = np->rn_next; } else { for (prev = dnp->rn_child; prev->rn_next != np; prev = prev->rn_next) { if (prev->rn_next == NULL) { mutex_unlock(&ramfs_lock); return ENOENT; } } prev->rn_next = np->rn_next; } ramfs_free_node(np); mutex_unlock(&ramfs_lock); return 0; }
static s32_t ramfs_remove_node(struct ramfs_node * dnode, struct ramfs_node * node) { struct ramfs_node * prev; if(dnode->child == NULL) return EBUSY; /* unlink from the directory list */ if(dnode->child == node) { dnode->child = node->next; } else { for(prev = dnode->child; prev->next != node; prev = prev->next) { if(prev->next == NULL) { return ENOENT; } } prev->next = node->next; } ramfs_free_node(node); return 0; }