/* Copyright (c) 1993 Xerox Corporation. All rights reserved. */ /* $Id$ $Date$ */ #ifndef ←←PCR←SigPvt←h # define ←←PCR←SigPvt←h 1 #include <config/PCR←StdTypes.h> #include <sig/PCR←SigTypes.h> #include <th/PCR←ThData.h> #include <th/PCR←ThTypes.h> #include <th/PCR←ThPvt.h> #ifndef PCR←NO←RENAME # ifdef NSIG # error # endif #else # ifndef NSIG # include <host/signal.h> # endif #endif /* * Mapping between host and PCR signal numbers */ typedef unsigned long PCR←SigPvt←ST; /* signal type */ /* resumable or terminal */ # define PCR←SigPvt←ST←rMask 0x1 # define PCR←SigPvt←ST←rBit 0x1 /* resumable */ /* trap or interrupt */ # define PCR←SigPvt←ST←sMask 0x2 # define PCR←SigPvt←ST←sBit 0x2 /* synchronous */ /* Unix default action */ # define PCR←SigPvt←ST←dMask 0xc # define PCR←SigPvt←ST←de 0x0 /* default is exit */ # define PCR←SigPvt←ST←di 0x4 /* default is ignore */ # define PCR←SigPvt←ST←dp 0x8 /* default is pause */ # define PCR←SigPvt←ST←dc 0xc /* default is continue */ /* can sig be caught/ignored? */ # define PCR←SigPvt←ST←ncMask 0x10 # define PCR←SigPvt←ST←ncBit 0x10 /* not catchable */ struct PCR←SigPvt←SigMapEntryRep { int sme←pcr; /* PCR sig num */ int sme←host; /* host sig num */ PCR←SigPvt←ST sme←st; /* sig type (see above) */ }; typedef struct PCR←SigPvt←SigMapEntryRep PCR←SigPvt←SigMapEntry; extern PCR←SigPvt←SigMapEntry PCR←SigPvt←sigMap[]; extern PCR←SigPvt←SigMapEntry *(PCR←SigPvt←pcrToMapEntry[1+PCR←NSIG]); extern PCR←SigPvt←SigMapEntry *(PCR←SigPvt←hostToMapEntry[1+NSIG]); /* * Per-thread signal info */ struct PCR←SigPvt←ThSigInfoRep { struct PCR←Th←CVRep tsi←contCV; /* SIGSTOP/SIGCONT */ PCR←sigset←t tsi←shrActionSet; struct PCR←Sig←ActionRep tsi←shrAction; struct PCR←Sig←ActionRep tsi←action[1+PCR←NSIG]; }; typedef struct PCR←SigPvt←ThSigInfoRep PCR←SigPvt←ThSigInfo; #define PCR←SigPvt←currThreadSigInfo (*( (PCR←SigPvt←ThSigInfo **) \ (&( PCR←ThData←Get()->td←←sigData )) )) /* * Host signal handlers ... wizards only! */ extern void PCR←SigPvtImpl←InstallHostSigHandler(int hostsig); extern void PCR←SigPvtImpl←InstallHostSigIgnorer(int hostsig); extern void PCR←SigPvtImpl←InstallHostSigDefault(int hostsig); #endif /* !←←PCR←SigPvt←h */ /* $Log$ */