/* * Initialize a usimple_lock. * * MACH_RT: No change in preemption state. */ void usimple_lock_init( usimple_lock_t l, etap_event_t event) { USLDBG(usld_lock_init(l, event)); ETAPCALL(etap_simplelock_init((l),(event))); hw_lock_init(&l->interlock); }
/* * Initialize a usimple_lock. * * No change in preemption state. */ void usimple_lock_init( usimple_lock_t l, __unused unsigned short tag) { #ifndef MACHINE_SIMPLE_LOCK USLDBG(usld_lock_init(l, tag)); hw_lock_init(&l->interlock); #else simple_lock_init((simple_lock_t)l,tag); #endif }
/* * Routine: wait_queue_init * Purpose: * Initialize a previously allocated wait queue. * Returns: * KERN_SUCCESS - The wait_queue_t was initialized * KERN_INVALID_ARGUMENT - The policy parameter was invalid */ kern_return_t wait_queue_init( wait_queue_t wq, int policy) { if (!((policy & SYNC_POLICY_ORDER_MASK) == SYNC_POLICY_FIFO)) return KERN_INVALID_ARGUMENT; wq->wq_fifo = TRUE; wq->wq_type = _WAIT_QUEUE_inited; queue_init(&wq->wq_queue); hw_lock_init(&wq->wq_interlock); return KERN_SUCCESS; }
/* * Routine: wait_queue_init * Purpose: * Initialize a previously allocated wait queue. * Returns: * KERN_SUCCESS - The wait_queue_t was initialized * KERN_INVALID_ARGUMENT - The policy parameter was invalid */ kern_return_t wait_queue_init( wait_queue_t wq, int policy) { /* only FIFO and LIFO for now */ if ((policy & SYNC_POLICY_FIXED_PRIORITY) != 0) return KERN_INVALID_ARGUMENT; wq->wq_fifo = ((policy & SYNC_POLICY_REVERSED) == 0); wq->wq_type = _WAIT_QUEUE_inited; queue_init(&wq->wq_queue); hw_lock_init(&wq->wq_interlock); return KERN_SUCCESS; }