All pastes #763809 Raw Edit

Stuff

public text v1 · immutable
·published 2007-11-06 19:28 UTC
rendered paste body
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);
	}
}

void lock_release(lock_t * l)
{
	spinlock_acquire(&l->spinlock);
	if (l->waiting)
		unblock(&l->waiting);
	else
		l->status = UNLOCKED;
	spinlock_release(&l->spinlock);
}