xref: /plan9-contrib/sys/include/ape/qlock.h (revision 363b328d5e77ac1e503119274823363e6b14b616)
1*363b328dSDavid du Colombier #ifndef _PLAN9_SOURCE
240ef9009SDavid du Colombier   This header file is an extension to ANSI/POSIX
340ef9009SDavid du Colombier #endif
4*363b328dSDavid du Colombier 
5*363b328dSDavid du Colombier #ifndef __QLOCK_H_
6*363b328dSDavid du Colombier #define __QLOCK_H_
740ef9009SDavid du Colombier #pragma lib "/$M/lib/ape/lib9.a"
840ef9009SDavid du Colombier 
9*363b328dSDavid du Colombier #include <u.h>
10*363b328dSDavid du Colombier #include <lock.h>
11*363b328dSDavid du Colombier 
1240ef9009SDavid du Colombier typedef struct QLp QLp;
1340ef9009SDavid du Colombier struct QLp
1440ef9009SDavid du Colombier {
1540ef9009SDavid du Colombier 	int	inuse;
1640ef9009SDavid du Colombier 	QLp	*next;
1740ef9009SDavid du Colombier 	char	state;
1840ef9009SDavid du Colombier };
1940ef9009SDavid du Colombier 
2040ef9009SDavid du Colombier typedef
2140ef9009SDavid du Colombier struct QLock
2240ef9009SDavid du Colombier {
2340ef9009SDavid du Colombier 	Lock	lock;
2440ef9009SDavid du Colombier 	int	locked;
2540ef9009SDavid du Colombier 	QLp	*head;
2640ef9009SDavid du Colombier 	QLp 	*tail;
2740ef9009SDavid du Colombier } QLock;
2840ef9009SDavid du Colombier 
2940ef9009SDavid du Colombier #ifdef __cplusplus
3040ef9009SDavid du Colombier extern "C" {
3140ef9009SDavid du Colombier #endif
3240ef9009SDavid du Colombier 
3340ef9009SDavid du Colombier extern	void	qlock(QLock*);
3440ef9009SDavid du Colombier extern	void	qunlock(QLock*);
3540ef9009SDavid du Colombier extern	int	canqlock(QLock*);
36*363b328dSDavid du Colombier 
3740ef9009SDavid du Colombier #ifdef __cplusplus
3840ef9009SDavid du Colombier }
3940ef9009SDavid du Colombier #endif
4040ef9009SDavid du Colombier 
4140ef9009SDavid du Colombier #endif
42