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