ref: 20f516bf800e367dbb3cbec0fc892874b205b625
dir: /sys/include/ape/qlock.h/
#ifndef _PLAN9_SOURCE This header file is an extension to ANSI/POSIX #endif #ifndef __QLOCK_H_ #define __QLOCK_H_ #pragma lib "/$M/lib/ape/lib9.a" #include <u.h> #include <lock.h> typedef struct QLp QLp; struct QLp { int inuse; int state; QLp *next; }; typedef struct QLock { Lock lock; int locked; QLp *head; QLp *tail; } QLock; typedef struct RWLock { Lock lock; int readers; /* number of readers */ int writer; /* number of writers */ QLp *head; /* list of waiting processes */ QLp *tail; } RWLock; #ifdef __cplusplus extern "C" { #endif extern void qlock(QLock*); extern void qunlock(QLock*); extern int canqlock(QLock*); extern void rlock(RWLock*); extern void runlock(RWLock*); extern int canrlock(RWLock*); extern void wlock(RWLock*); extern void wunlock(RWLock*); extern int canwlock(RWLock*); #ifdef __cplusplus } #endif #endif