/* * This file is part of the UCB release of Plan 9. It is subject to the license * terms in the LICENSE file found in the top-level directory of this * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No * part of the UCB release of Plan 9, including this file, may be copied, * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */#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; QLp *next; char state;};typedefstruct QLock{ Lock lock; int locked; QLp *head; QLp *tail;} QLock;#ifdef __cplusplusextern "C" {#endifextern void qlock(QLock*);extern void qunlock(QLock*);extern int canqlock(QLock*);#ifdef __cplusplus}#endif#endif
/*
* This file is part of the UCB release of Plan 9. It is subject to the license
* terms in the LICENSE file found in the top-level directory of this
* distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
* part of the UCB release of Plan 9, including this file, may be copied,
* modified, propagated, or distributed except according to the terms contained
* in the LICENSE file.
*/
#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;
QLp *next;
char state;
};
typedef
struct QLock
{
Lock lock;
int locked;
QLp *head;
QLp *tail;
} QLock;
#ifdef __cplusplus
extern "C" {
#endif
extern void qlock(QLock*);
extern void qunlock(QLock*);
extern int canqlock(QLock*);
#ifdef __cplusplus
}
#endif
#endif