|
|
DataMuseum.dkPresents historical artifacts from the history of: RC9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: @ T s
Length: 7574 (0x1d96)
Types: TextFile
Notes: @(#)signal.h 13.2 (RC International) 91/05/28 */
Names: »signal.h«
└─⟦50656ff4a⟧ Bits:30010538 TX 3.1 Coldstart
└─⟦bbf173f5c⟧ »0004«
└─⟦this⟧ »./bsd/usr/include/sys/signal.h«
/* @(#)signal.h 13.2 (RC International) 91/05/28 */
#ifndef _SIGNAL_H
#define _SIGNAL_H
#define NSIG 33
#define SIGHUP 1 /* hangup */
#define SIGINT 2 /* interrupt */
#define SIGQUIT 3 /* quit */
#define SIGILL 4 /* illegal instruction */
#define SIGTRAP 5 /* trace trap (not reset when caught) */
#define SIGIOT 6 /* IOT instruction */
#define SIGABRT SIGIOT
#define SIGEMT 7 /* EMT instruction */
#define SIGFPE 8 /* FLOATing point exception (not all are FPU related) */
/* R2010 hardware codes: */
#define FPE_FLTINX_TRAP 0x1 /* inexact result */
#define FPE_FLTUND_TRAP 0x2 /* FLOATing underflow */
#define FPE_FLTOVF_TRAP 0x4 /* FLOATing overflow */
#define FPE_FLTDIV_TRAP 0x8 /* FLOATing divide by zero */
#define FPE_FLTINV_TRAP 0x10 /* FLOATing invalid operation */
#define FPE_FLTILL_TRAP 0x20 /* FLOATing illegal instruction */
/* Software codes: */
#define FPE_OVERFLOW_TRAP 0x40 /* Integer overflow */
#define FPE_OCHECK_TRAP 0x41 /* Integer overflow error check */
#define FPE_RANGE_TRAP 0x42 /* Integer range error */
#define FPE_INTDIV_TRAP 0x43 /* Integer divide error */
#define FPE_ASSERT_TRAP 0x44 /* Pascal assert statement */
#define SIGKILL 9 /* kill (cannot be caught or ignored) */
#define SIGBUS 10 /* bus error */
#define SIGSEGV 11 /* segmentation violation */
#define SIGSYS 12 /* bad argument to system call */
#define SIGPIPE 13 /* write on a pipe with no one to read it */
#define SIGALRM 14 /* alarm clock */
#define SIGTERM 15 /* software termination signal from kill */
#define SIGURG 16 /* urgent condition on IO channel */
#define SIGSTOP 17 /* sendable stop signal not from tty */
#define SIGTSTP 18 /* stop signal from tty */
#define SIGSTP SIGTSTP
#define SIGCONT 19 /* continue a stopped process */
#define SIGCHLD 20 /* to parent on child stop or exit */
#define SIGCLD SIGCHLD
#define SIGTTIN 21 /* to readers pgrp upon background tty read */
#define SIGTTOU 22 /* like TTIN for output if (tp->t_local<OSTOP) */
#define SIGIO 23 /* input/output possible signal */
#define SIGXCPU 24 /* exceeded CPU time limit */
#define SIGXFSZ 25 /* exceeded file size limit */
#define SIGVTALRM 26 /* virtual time alarm */
#define SIGPROF 27 /* profiling time alarm */
#define SIGERR 28 /* error in system call */
#define SIGTRANS 29 /* transaction state change */
#define SIGABORT 30 /* transaction aborted */
#define SIGUSR1 31 /* user-defined signal 1 */
#define SIGUSR2 SIGEMT /* user-defined signal 2 */
#define SIGWINCH 32 /* window signal */
/*
* Codes for the mips break instruction.
*/
#define BRK_USERBP 0 /* user bp (used by debuggers) */
#define BRK_DBGMONBP 1 /* dbgmon bp (used by dbgmon and pdbx) */
#define BRK_KERNELBP 2 /* kernel bp (used by debuggers) */
#define BRK_BD_TAKEN 3 /* for taken bd emulation */
#define BRK_BD_NOTTAKEN 4 /* for not taken bd emulation */
#define BRK_SSTEPBP 5 /* user bp (used by debuggers) */
#define BRK_OVERFLOW 6 /* overflow check */
#define BRK_DIVZERO 7 /* divide by zero check */
#define BRK_RANGE 8 /* range error check */
#define BRK_STACKOVERFLOW 9 /* reserved for ADA */
#define BRK_ASSERT 10 /* Pascal assert statement */
/* next two is for kernel debugger use - should not collide */
#define BRK_STEPOVERBP 200 /* stepover bp for reinstallation of bps */
#define BRK_KSTEPOVERBP 201 /* stepover bp for reinstallation of bps */
/* in kernel */
#ifdef LANGUAGE_C
/*
* Signal vector "template" used in sigvec call.
*/
struct sigvec {
int (*sv_handler)(); /* signal handler */
int sv_mask; /* signal mask to apply */
int sv_flags; /* see signal options below */
};
#define SV_ONSTACK 0x0001 /* take signal on signal stack */
#define SV_INTERRUPT 0x0002 /* do not restart system on signal return */
#define SV_RESETHAND 0x0004 /* */
#define SV_NODEFER 0x0008 /* */
#define SV_NOCLDSTOP 0x0010 /* */
#define sv_onstack sv_flags /* for compatibility */
/*
* Structure used in sigstack call.
*/
struct sigstack {
char *ss_sp; /* signal stack pointer */
int ss_onstack; /* current status */
};
/*
* Information pushed on stack when a signal is delivered.
* This is used by the kernel to restore state following
* execution of the signal handler. It is also made available
* to the handler to allow it to properly restore state if
* a non-standard exit is performed.
*
* WARNING: THE sigcontext MUST BE KEPT CONSISTENT WITH /usr/include/setjmp.h
* AND THE LIBC ROUTINES setjmp() AND longjmp()
*/
struct sigcontext {
/*
* BEGIN REGION THAT MUST CORRESPOND WITH setjmp.h
* BEGIN REGION THAT MUST CORRESPOND WITH A jmp_buf
*/
struct sigstack sc_sigstack; /* sigstack state to restore */
#define sc_sp sc_sigstack.ss_sp
#define sc_onstack sc_sigstack.ss_onstack
int sc_mask; /* signal mask to restore */
int sc_pc; /* pc at time of signal */
int sc_signum; /* signal number */
int sc_code; /* error code */
/*
* General purpose registers
*/
int sc_regs[32]; /* processor regs 0 to 31 */
int sc_mdlo; /* mul/div low */
int sc_mdhi; /* mul/div high */
/*
* Floating point coprocessor state
*/
int sc_ownedfp; /* fp has been used */
int sc_fpregs[32]; /* fp regs 0 to 31 */
int sc_fpc_csr; /* floating point control and status reg */
int sc_fpc_eir; /* floating point exception instruction reg */
/*
* END OF REGION THAT MUST AGREE WITH setjmp.h
* END OF jmp_buf REGION
*/
/*
* System coprocessor registers at time of signal
*/
int sc_cause; /* cp0 cause register */
int sc_badvaddr; /* cp0 bad virtual address */
int sc_badpaddr; /* cpu bd bad physical address */
};
#define BADSIG (int (*)())-1
#define SIG_DFL (int (*)())0 /* default action */
#define SIG_IGN (int (*)())1 /* no action */
#define SIG_CATCH (int (*)())2 /* call user's handler */
#define SIG_HOLD (int (*)())3 /* defer action until unblocked */
/*
* POSIX signal handling
*/
typedef struct sigset_t {
int ss_set;
} sigset_t;
/*
* Struct sigaction used in sigaction call.
*/
struct sigaction {
void (*sa_handler)(); /* Signal handler */
sigset_t sa_mask; /* Blocked signals */
int sa_flags; /* Special flags */
};
#define SA_NOCLDSTOP 1 /* sigaction(): Do not generate SIGCHLD */
#define SIG_BLOCK 1 /* sigprocmask(): Union */
#define SIG_UNBLOCK 2 /* sigprocmask(): Intersection */
#define SIG_SETMASK 3 /* sigprocmask(): Replace */
#if defined(__STDC__)
extern int (*signal(int, int (*)()))();
#if __STDC__ == 0 || defined(_POSIX_SOURCE) || defined(_XOPEN_SOURCE)
#include <sys/types.h>
extern int kill(pid_t, int);
extern int sigaction(int, struct sigaction *, struct sigaction *);
extern int sigaddset(sigset_t *, int);
extern int sigdelset(sigset_t *, int);
extern int sigemptyset(sigset_t *);
extern int sigfillset(sigset_t *);
extern int sigismember(sigset_t *, int);
extern int sigpending(sigset_t *);
extern int sigprocmask(int, sigset_t *, sigset_t *);
extern int sigsuspend(sigset_t *);
#endif
#if __STDC__ == 0 && !defined(_POSIX_SOURCE)
extern void (*sigset(int, void (*)()))();
extern int sighold(int);
extern int sigrelse(int);
extern int sigignore(int);
extern int sigpause(int);
#endif
#else /* Not __STDC__ */
extern int (*signal())();
#endif /* __STDC__ */
#endif /* LANGUAGE_C */
/*
* sigsetmode flag definitions
*/
#define SIG_RSTINTR (1 << 0) /* restart interrupted system calls */
#define SIG_RESETDFL (1 << 1) /* reset caught signals to SIG_DFL */
/*
* Macro for converting signal number to a mask suitable for sigblock().
*/
#define sigmask(m) (1 << ((m)-1))
#endif /* _SIGNAL_H */