/* 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 #include #include /* * 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$ */