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