void simple_unlock_no_trace( simple_lock_t l) { pc_t pc; OBTAIN_PC(pc, l); USLDBG(usld_unlock(l, pc)); hw_lock_unlock(&l->interlock); }
/* * Release a usimple_lock. * * MACH_RT: Returns with preemption enabled. Note * that the hw_lock routines are responsible for * maintaining preemption state. */ void usimple_unlock( usimple_lock_t l) { pc_t pc; OBTAIN_PC(pc, l); USLDBG(usld_unlock(l, pc)); ETAPCALL(etap_simplelock_unlock(l)); hw_lock_unlock(&l->interlock); }
/* * Release a usimple_lock. * * Returns with preemption enabled. Note * that the hw_lock routines are responsible for * maintaining preemption state. */ void usimple_unlock( usimple_lock_t l) { #ifndef MACHINE_SIMPLE_LOCK DECL_PC(pc); OBTAIN_PC(pc, l); USLDBG(usld_unlock(l, pc)); hw_lock_unlock(&l->interlock); #else simple_unlock_rwmb((simple_lock_t)l); #endif }