/* Copyright (c) 1993 Xerox Corporation. All rights reserved. */ /* $Id$ $Date$ * * Basic public type definitions for PCR threads * */ #ifndef ←←PCR←ThTypes←h #define ←←PCR←ThTypes←h 1 #include <config/PCR←Arch.h> #include <config/PCR←StdTypes.h> #include <sig/PCR←SigTypes.h> /* * Threads are heap objects and completely opaque. */ #define PCR←Th←T struct PCR←Th←TRep typedef PCR←Th←T * PCR←Th←TPtr; /* * Monitor Locks * * MLs are opaque but clients may allocate and initialize them. */ # if PCR←Arch←STD←SIZES struct PCR←Th←MLRep { long mlrep←opaque[2]; }; # else # error define ML for this architecture # endif typedef volatile struct PCR←Th←MLRep PCR←Th←ML; #define PCR←Th←ML←null { 0 } /* * Condition variables * * CVs are opaque but clients may allocate and initialize them. */ # if PCR←Arch←STD←SIZES struct PCR←Th←CVRep { long cvrep←opaque[2]; }; # else # error define ML for this architecture # endif typedef volatile struct PCR←Th←CVRep PCR←Th←CV; #define PCR←Th←CV←null { 0 } /* * Priority * * Client priorities must lie between userBackground and userForeground. */ typedef unsigned PCR←Th←Pri; #define PCR←Th←Pri←←stopped ((PCR←Th←Pri)(0)) #define PCR←Th←Pri←stopped PCR←Th←Pri←←stopped #define PCR←Th←Pri←←idle ((PCR←Th←Pri)(1)) #define PCR←Th←Pri←idle PCR←Th←Pri←←idle #endif /* ! ←←PCR←Th←h */ /* $Log$ */