shithub: riscv

ref: af6f03e52829a571f1fa3d61c0bfa09a1c89ea36
dir: /sys/src/cmd/dossrv/lock.c/

View raw version
#include <u.h>
#include <libc.h>
#include "iotrack.h"
#include "dat.h"
#include "fns.h"

void
mlock(MLock *l)
{

	if(l->key != 0 && l->key != 1)
		panic("uninitialized lock");
	if (l->key)
		panic("lock");
	l->key = 1;
}

void
unmlock(MLock *l)
{

	if(l->key != 0 && l->key != 1)
		panic("uninitialized unlock");
	if (!l->key)
		panic("unlock");
	l->key = 0;
}

int
canmlock(MLock *l)
{
	if(l->key != 0 && l->key != 1)
		panic("uninitialized canlock");
	if (l->key)
		return 0;
	l->key = 1;
	return 1;
}