void lock_acquire(lock_t * l) { spinlock_acquire(&l->spinlock); if (l->status == LOCKED) { block(&l->waiting, &l->spinlock); } else { l->status = LOCKED; spinlock_release(&l->spinlock); } }