/* Copyright (c) 1993 Xerox Corporation. All rights reserved. */ /* $Id$ $Date$ */ #ifndef __PCR_SigPvt_h # define __PCR_SigPvt_h 1 #include #include #include #include #include #ifndef PCR_NO_RENAME # ifdef NSIG # error # endif #else # ifndef NSIG # include # 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$ */