/* - Decrement f_count. * - If f_count == 0, call vput() and free it. */ void fput(file_t *f) { KASSERT(f); KASSERT(f->f_mode >= 0 && f->f_mode < 8); KASSERT(f->f_pos >= -1); KASSERT(f->f_refcount > 0); if (f->f_refcount != 1) KASSERT(f->f_vnode); f->f_refcount--; if (f->f_vnode) { dbg(DBG_FREF, "fput: 0x%p, 0x%p ino %lu, down to %d\n", f, f->f_vnode->vn_fs, (unsigned long) f->f_vnode->vn_vno, f->f_refcount); } else { dbg(DBG_FREF, "fput: 0x%p down to %d\n", f, f->f_refcount); } if (f->f_refcount == 0) { if (f->f_vnode) vput(f->f_vnode); slab_obj_free(file_allocator, f); } }
void vmarea_free(vmarea_t *vma) { KASSERT(NULL != vma); slab_obj_free(vmarea_allocator, vma); }