void lck_spin_destroy(lck_spin_t *lck, lck_grp_t *grp) { if (lck->interlock == LCK_SPIN_TAG_DESTROYED) return; lck->interlock = LCK_SPIN_TAG_DESTROYED; lck_grp_lckcnt_decr(grp, LCK_TYPE_SPIN); lck_grp_deallocate(grp); }
/* * Routine: lck_rw_destroy */ void lck_rw_destroy( lck_rw_t *lck, lck_grp_t *grp) { if (lck->lck_rw_tag == LCK_RW_TAG_DESTROYED) return; lck->lck_rw_tag = LCK_RW_TAG_DESTROYED; lck_grp_lckcnt_decr(grp, LCK_TYPE_RW); lck_grp_deallocate(grp); return; }
/* * Routine: lck_mtx_destroy */ void lck_mtx_destroy( lck_mtx_t *lck, lck_grp_t *grp) { boolean_t lck_is_indirect; if (lck->lck_mtx_tag == LCK_MTX_TAG_DESTROYED) return; lck_is_indirect = (lck->lck_mtx_tag == LCK_MTX_TAG_INDIRECT); lck->lck_mtx_tag = LCK_MTX_TAG_DESTROYED; if (lck_is_indirect) kfree(lck->lck_mtx_ptr, sizeof(lck_mtx_ext_t)); lck_grp_lckcnt_decr(grp, LCK_TYPE_MTX); lck_grp_deallocate(grp); return; }