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