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