/* Copyright (c) 1993 Xerox Corporation. All rights reserved. */ /* $Id$ $Date$ * * PCR thread client data definitions * */ #ifndef ←←PCR←ThData←h #define ←←PCR←ThData←h 1 #include <config/PCR←Arch.h> #include <config/PCR←StdTypes.h> #include <sig/PCR←SigTypes.h> #define PCR←ThData←MAX 8 struct PCR←ThData←TRep { void * td←←slotData; void * td←←unwindData; int td←←errno; int td←←t←errno; void * td←←sigData; void * td←←ioData; void * td←←emuIData; void * td←←emuRData; void * td←←propData[PCR←ThData←MAX]; }; typedef volatile struct PCR←ThData←TRep PCR←ThData←T; extern PCR←ThData←T * PCR←ThData←Get(void); #define PCR←ThData←Get() ((PCR←ThData←T *)(PCR←Th←CurrThread())) /* * fast (less slow) errno access ... */ #undef PCR←GetErrnoAddress extern int (*(PCR←GetErrnoAddress(void))); #define PCR←GetErrnoAddress() (&( PCR←ThData←Get()->td←←errno )) #endif /* ! ←←PCR←ThData←h */ /* $Log$ */