/* * Routine: lck_mtx_init_ext */ void lck_mtx_init_ext( lck_mtx_t *lck, lck_mtx_ext_t *lck_ext, lck_grp_t *grp, lck_attr_t *attr) { lck_attr_t *lck_attr; if (attr != LCK_ATTR_NULL) lck_attr = attr; else lck_attr = &LockDefaultLckAttr; if ((lck_attr->lck_attr_val) & LCK_ATTR_DEBUG) { lck_mtx_ext_init(lck_ext, grp, lck_attr); lck->lck_mtx_tag = LCK_MTX_TAG_INDIRECT; lck->lck_mtx_ptr = lck_ext; } else { lck->lck_mtx_ilk = 0; lck->lck_mtx_locked = 0; lck->lck_mtx_waiters = 0; lck->lck_mtx_pri = 0; } lck_grp_reference(grp); lck_grp_lckcnt_incr(grp, LCK_TYPE_MTX); }
void lck_spin_init(lck_spin_t *lck, lck_grp_t *grp, __unused lck_attr_t *attr) { lck->interlock = 0; lck_grp_reference(grp); lck_grp_lckcnt_incr(grp, LCK_TYPE_SPIN); }
/* * Routine: lck_spin_init */ void lck_spin_init( lck_spin_t *lck, lck_grp_t *grp, __unused lck_attr_t *attr) { usimple_lock_init((usimple_lock_t) lck, 0); lck_grp_reference(grp); lck_grp_lckcnt_incr(grp, LCK_TYPE_SPIN); }
void lck_rw_init(lck_rw_t *lck, lck_grp_t *grp, lck_attr_t *attr) { lck_attr_t *lck_attr = (attr != LCK_ATTR_NULL) ? attr : &LockDefaultLckAttr; lck->lck_rw_interlock = 0; lck->lck_rw_want_excl = FALSE; lck->lck_rw_want_upgrade = FALSE; lck->lck_rw_shared_count = 0; lck->lck_rw_waiting = 0; lck->lck_rw_tag = 0; lck->lck_rw_priv_excl = ((lck_attr->lck_attr_val & LCK_ATTR_RW_SHARED_PRIORITY) == 0); lck_grp_reference(grp); lck_grp_lckcnt_incr(grp, LCK_TYPE_RW); }
void lck_mtx_init(lck_mtx_t *lck, lck_grp_t *grp, lck_attr_t *attr) { lck_mtx_ext_t *lck_ext; lck_attr_t *lck_attr; if (attr != LCK_ATTR_NULL) lck_attr = attr; else lck_attr = &LockDefaultLckAttr; lck->lck_mtx_data = 0; lck->lck_mtx_waiters = 0; lck->lck_mtx_state = 0; lck_grp_reference(grp); lck_grp_lckcnt_incr(grp, LCK_TYPE_MTX); }