home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 15 / 15.iso / s / s053 / 25.ddi / root.2 / usr / ucbinclude / sys / signal.h < prev    next >
Encoding:
C/C++ Source or Header  |  1990-12-08  |  14.7 KB  |  445 lines

  1. /*    Copyright (c) 1990 UNIX System Laboratories, Inc.    */
  2. /*    Copyright (c) 1984, 1986, 1987, 1988, 1989, 1990 AT&T    */
  3. /*      All Rights Reserved      */
  4.  
  5. /*    THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF         */
  6. /*    UNIX System Laboratories, Inc.                         */
  7. /*    The copyright notice above does not evidence any       */
  8. /*    actual or intended publication of such source code.    */
  9.  
  10. #ident    "@(#)//usr/ucbinclude/sys/signal.h.sl 1.1 4.0 12/08/90 8994 AT&T-USL"
  11. /*******************************************************************
  12.  
  13.         PROPRIETARY NOTICE (Combined)
  14.  
  15. This source code is unpublished proprietary information
  16. constituting, or derived under license from AT&T's UNIX(r) System V.
  17. In addition, portions of such source code were derived from Berkeley
  18. 4.3 BSD under license from the Regents of the University of
  19. California.
  20.  
  21.  
  22.  
  23.         Copyright Notice 
  24.  
  25. Notice of copyright on this source code product does not indicate 
  26. publication.
  27.  
  28.     (c) 1986,1987,1988,1989  Sun Microsystems, Inc
  29.     (c) 1983,1984,1985,1986,1987,1988,1989  AT&T.
  30.               All rights reserved.
  31. ********************************************************************/ 
  32. #ifndef _UCB_SYS_SIGNAL_H
  33. #define _UCB_SYS_SIGNAL_H
  34.  
  35. /*
  36.  * 4.3BSD signal compatibility header
  37.  *
  38.  * this file includes all standard SVR4 header info, plus the 4.3BSD
  39.  * structures  - 4.3BSD signal codes are translated to SVR4 generic
  40.  * signal codes where applicable
  41.  */
  42.  
  43. /*
  44.  * SysV <signal.h>
  45.  */
  46.  
  47. /* ---- k16 <signal.h> ---- */
  48.  
  49. /*    Copyright (c) 1988 AT&T    */
  50. /*      All Rights Reserved      */
  51.  
  52. /*    THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T    */
  53. /*    The copyright notice above does not evidence any       */
  54. /*    actual or intended publication of such source code.    */
  55.  
  56. #ifndef _SIGNAL_H
  57. #define _SIGNAL_H
  58.  
  59.  
  60. typedef int     sig_atomic_t;
  61.  
  62. extern char *_sys_siglist[];
  63. extern int _sys_nsig;
  64.  
  65. /* ---- k16 <sys/signal.h> ---- */
  66.  
  67. /*    Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T    */
  68. /*      All Rights Reserved      */
  69.  
  70. /*    THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T    */
  71. /*    The copyright notice above does not evidence any       */
  72. /*    actual or intended publication of such source code.    */
  73.  
  74. #ifndef _SYS_SIGNAL_H
  75. #define _SYS_SIGNAL_H
  76.  
  77.  
  78. #define    SIGHUP    1    /* hangup */
  79. #define    SIGINT    2    /* interrupt (rubout) */
  80. #define    SIGQUIT    3    /* quit (ASCII FS) */
  81. #define    SIGILL    4    /* illegal instruction (not reset when caught) */
  82. #define    SIGTRAP    5    /* trace trap (not reset when caught) */
  83. #define    SIGIOT    6    /* IOT instruction */
  84. #define SIGABRT 6    /* used by abort, replace SIGIOT in the future */
  85. #define    SIGEMT    7    /* EMT instruction */
  86. #define    SIGFPE    8    /* floating point exception */
  87. #define    SIGKILL    9    /* kill (cannot be caught or ignored) */
  88. #define    SIGBUS    10    /* bus error */
  89. #define    SIGSEGV    11    /* segmentation violation */
  90. #define    SIGSYS    12    /* bad argument to system call */
  91. #define    SIGPIPE    13    /* write on a pipe with no one to read it */
  92. #define    SIGALRM    14    /* alarm clock */
  93. #define    SIGTERM    15    /* software termination signal from kill */
  94. #define    SIGUSR1    16    /* user defined signal 1 */
  95. #define    SIGUSR2    17    /* user defined signal 2 */
  96. #define    SIGCLD    18    /* child status change */
  97. #define    SIGCHLD    18    /* child status change alias (POSIX) */
  98. #define    SIGPWR    19    /* power-fail restart */
  99. #define SIGWINCH 20    /* window size change */
  100. #define SIGURG    21    /* urgent socket condition */
  101. #define SIGPOLL 22    /* pollable event occured */
  102. #define SIGIO    22    /* socket I/O possible (SIGPOLL alias) */
  103. #define SIGSTOP 23    /* stop (cannot be caught or ignored) */
  104. #define SIGTSTP 24    /* user stop requested from tty */
  105. #define SIGCONT 25    /* stopped process has been continued */
  106. #define SIGTTIN 26    /* background tty read attempted */
  107. #define SIGTTOU 27    /* background tty write attempted */
  108. #define SIGVTALRM 28    /* virtual timer expired */
  109. #define SIGPROF 29    /* profiling timer expired */
  110. #define SIGXCPU 30    /* exceeded cpu limit */
  111. #define SIGXFSZ 31    /* exceeded file size limit */
  112.  
  113. #if (__STDC__ != 1)    
  114. #define    NSIG    32    /* valid signals range from 1 to NSIG-1 */
  115. #define MAXSIG    32    /* size of u_signal[], NSIG-1 <= MAXSIG */
  116. #endif
  117.  
  118. #define S_SIGNAL    1
  119. #define S_SIGSET    2
  120. #define S_SIGACTION    3
  121. #define S_NONE        4
  122.  
  123. #define SIG_BLOCK    1
  124. #define SIG_UNBLOCK    2
  125. #define SIG_SETMASK    3
  126.  
  127. #if defined(lint)
  128. #define SIG_ERR (void(*)())0
  129. #define    SIG_IGN    (void (*)())0
  130. #define SIG_HOLD (void(*)())0
  131. #else
  132. #define SIG_ERR    (void(*)())-1
  133. #define    SIG_IGN    (void (*)())1
  134. #define SIG_HOLD (void(*)())2
  135. #endif
  136. #define    SIG_DFL    (void(*)())0
  137.  
  138. typedef struct {        /* signal set type */
  139.     unsigned long    word[4];
  140. } sigset_t;
  141.  
  142. #ifndef _SYS_SIGACTION_H
  143. #define _SYS_SIGACTION_H
  144. struct sigaction {
  145.         int sa_flags;
  146.         void (*sa_handler)();
  147.         sigset_t sa_mask;
  148.         int sa_resv[2];
  149. };
  150.  
  151.  
  152. /* definitions for the sa_flags field */
  153.  
  154. #define SA_ONSTACK    0x00000001
  155. #define SA_RESETHAND    0x00000002
  156. #define SA_RESTART    0x00000004
  157. #define SA_SIGINFO    0x00000008
  158. #define SA_NODEFER    0x00000010
  159.  
  160. /* these are only valid for SIGCLD */
  161. #define SA_NOCLDWAIT    0x00010000    /* don't save zombie children     */
  162. #define SA_NOCLDSTOP    0x00020000    /* don't send job control SIGCLD's */
  163. #endif
  164.  
  165. struct sigaltstack {
  166.     char    *ss_sp;
  167.     int    ss_size;    /* number of words of type (int *) */
  168.     int    ss_flags;
  169. };
  170.  
  171. typedef struct sigaltstack stack_t;
  172.  
  173. #define MINSIGSTKSZ    (512/sizeof(int *))
  174. #define SIGSTKSZ    (8192/sizeof(int *))
  175.  
  176. #define SS_ONSTACK    0x00000001 /* this is current execution stack */
  177. #define SS_DISABLE    0x00000002 /* this stack cannot be used */
  178.  
  179. #define SIGNO_MASK    0xFF
  180. #define SIGDEFER    0x100
  181. #define SIGHOLD        0x200
  182. #define SIGRELSE    0x400
  183. #define SIGIGNORE    0x800
  184. #define SIGPAUSE    0x1000
  185.  
  186. #ifdef _KERNEL 
  187.  
  188. extern k_sigset_t    
  189.     fillset,        /* set of valid signals,
  190.                  * guaranteed contiguous */
  191.     holdvfork,        /* held while doing vfork */
  192.     cantmask,        /* cannot be caught or ignored */
  193.     cantreset,        /* cannot be reset after catching */
  194.     ignoredefault,        /* ignored by default */
  195.     stopdefault,        /* stop by default */
  196.     coredefault;        /* dumps core by default */
  197.  
  198.  
  199. #define    sigmask(n)        ((unsigned long)1 << ((n) - 1))
  200.  
  201. #define sigemptyset(s)        (*(s) = 0)
  202. #define sigfillset(s)        (*(s) = fillset)
  203. #define sigaddset(s,n)        (*(s) |= sigmask(n))
  204. #define sigdelset(s,n)        (*(s) &= ~sigmask(n))
  205. #define sigisempty(s)        (*(s) == 0)
  206. #define    sigismember(s,n)    (sigmask(n) & *(s))
  207. #define sigorset(s1,s2)        (*(s1) |= *(s2))
  208. #define    sigandset(s1,s2)    (*(s1) &= *(s2))
  209. #define    sigdiffset(s1,s2)    (*(s1) &= ~(*(s2)))
  210. #define    sigintset(s1,s2)    (*(s1) & *(s2))
  211. #define sigutok(us,ks)        (*(ks) = (us)->word[0])
  212. #define sigktou(ks,us)        ((us)->word[0] = *(ks),    \
  213.                  (us)->word[1] = 0,    \
  214.                  (us)->word[2] = 0,    \
  215.                  (us)->word[3] = 0)
  216.  
  217. typedef struct {
  218.     int    sig;
  219.     int    perm;
  220.     int    checkperm;
  221. } sigsend_t;
  222.  
  223. #if defined(__STDC__)
  224. extern void setsigact(int, void (*)(), k_sigset_t, int);
  225. #else
  226. extern void setsigact();
  227. #endif    /* __STDC__ */
  228.  
  229. #endif /* _KERNEL */
  230.  
  231. #endif /* _SYS_SIGNAL_H */
  232. /* ---- end of SysV <sys/signal.h> ---- */
  233.  
  234. #if defined(__STDC__)
  235.  
  236. extern void (*signal(int, void (*)(int)))(int);
  237. extern int raise(int);
  238.  
  239. #if __STDC__ == 0 || defined(_POSIX_SOURCE) || defined(_XOPEN_SOURCE)
  240. /* extern int kill(pid_t, int); */
  241. extern int sigaction(int, struct sigaction *, struct sigaction *);
  242. extern int sigaddset(sigset_t *, int);
  243. extern int sigdelset(sigset_t *, int);
  244. extern int sigemptyset(sigset_t *);
  245. extern int sigfillset(sigset_t *);
  246. extern int sigismember(sigset_t *, int);
  247. extern int sigpending(sigset_t *);
  248. extern int sigprocmask(int, sigset_t *, sigset_t *);
  249. extern int sigsuspend(sigset_t *);
  250. #endif
  251.  
  252. #if __STDC__ == 0
  253. extern int gsignal(int);
  254. extern void (*sigset(int, void (*)(int)))(int);
  255. extern int sighold(int);
  256. extern int sigrelse(int);
  257. extern int sigignore(int);
  258. extern int sigpause(int);
  259. extern int (*ssignal(int, int (*)(int)))(int);
  260. #endif
  261.  
  262. #else
  263. extern    void(*signal())();
  264. extern  void(*sigset())();
  265.  
  266. #endif     /* __STDC__ */
  267.  
  268. #endif     /* _SIGNAL_H */
  269. /* ---- end of SysV <signal.h> ---- */
  270.  
  271. #define sigmask(m)    (m > 32 ? 0 : (1 << ((m)-1)))
  272.  
  273. /*
  274.  * 4.3BSD structure used in sigstack call.
  275.  */
  276.  
  277. struct  sigstack {
  278.         char    *ss_sp;                 /* signal stack pointer */
  279.         int     ss_onstack;             /* current status */
  280. };
  281.  
  282. /*
  283.  * 4.3BSD signal vector structure used in sigvec call.
  284.  */
  285. struct  sigvec {
  286.         void    (*sv_handler)();        /* signal handler */
  287.         int     sv_mask;                /* signal mask to apply */
  288.         int     sv_flags;               /* see signal options below */
  289. };
  290.  
  291. #define SV_ONSTACK      0x0001  /* take signal on signal stack */
  292. #define SV_INTERRUPT    0x0002  /* do not restart system on signal return */
  293. #define SV_RESETHAND    0x0004  /* reset handler to SIG_DFL when signal taken */
  294.  
  295. #define sv_onstack sv_flags
  296.  
  297. struct  sigcontext {
  298.         int     sc_onstack;             /* sigstack state to restore */
  299.         int     sc_mask;                /* signal mask to restore */
  300. #ifdef u3b2
  301.         int     sc_sp;                  /* sp to restore */
  302.         int     sc_fp;                  /* fp to restore */
  303.         int     sc_ap;                  /* ap to restore */
  304.         int     sc_pc;                  /* pc to restore */
  305.         int       sc_ps;                  /* psw to restore */
  306. #endif
  307. #ifdef vax
  308.         int     sc_sp;                  /* sp to restore */
  309.         int     sc_fp;                  /* fp to restore */
  310.         int     sc_ap;                  /* ap to restore */
  311.         int     sc_pc;                  /* pc to restore */
  312.         int     sc_ps;                  /* psl to restore */
  313. #endif /* vax */
  314. #ifdef mc68000
  315.         int     sc_sp;                  /* sp to restore */
  316.         int     sc_pc;                  /* pc to retore */
  317.         int     sc_ps;                  /* psl to restore */
  318. #endif /* mc68000 */
  319. #ifdef sparc
  320. #define MAXWINDOW       31              /* max usable windows in sparc */
  321.         int     sc_sp;                  /* sp to restore */
  322.         int     sc_pc;                  /* pc to retore */
  323.         int     sc_npc;                 /* next pc to restore */
  324.         int     sc_psr;                 /* psr to restore */
  325.         int     sc_g1;                  /* register that must be restored */
  326.         int     sc_o0;
  327.         int     sc_wbcnt;               /* number of outstanding windows */
  328.         char    *sc_spbuf[MAXWINDOW];   /* sp's for each wbuf */
  329.         int     sc_wbuf[MAXWINDOW][16]; /* outstanding window save buffer */
  330. #endif /* sparc */
  331. #if defined(i386) || defined(sun386)
  332.         int     sc_sp;                  /* sp to restore */
  333.         int     sc_pc;                  /* pc to retore */
  334.         int     sc_ps;                  /* psl to restore */
  335.         int     sc_eax;                 /* eax to restore */
  336.         int     sc_edx;                 /* edx to restore */
  337. #endif
  338. };
  339.  
  340. #define SI_DFLCODE    1
  341.  
  342. #ifdef vax
  343. #define ILL_RESAD_FAULT    ILL_ILLADR    /* reserved addressing fault */
  344. #define ILL_PRIVIN_FAULT ILL_PRVOPC    /* privileged instruction fault */
  345. #define ILL_RESOP_FAULT    ILL_ILLOPC    /* reserved operand fault */
  346.  
  347. #define FPE_INTOVF_TRAP    FPE_INTOVF    /* integer overflow */
  348. #define FPE_INTDIV_TRAP    FPE_INTDIV    /* integer divide by zero */
  349. #define FPE_FLTOVF_TRAP    FPE_FLTOVF    /* floating overflow */
  350. #define FPE_FLTDIV_TRAP    FPE_FLTDIV    /* floating/decimal divide by zero */
  351. #define FPE_FLTUND_TRAP    FPE_FLTUND    /* floating underflow */
  352. #define FPE_DECOVF_TRAP    FPE_INTOVF    /* decimal overflow */
  353. #define FPE_SUBRNG_TRAP    FPE_FLTSUB    /* subscript out of range */
  354. #define FPE_FLTOVF_FAULT FPR_FLTOVF    /* floating overflow fault */
  355. #define FPE_FLTDIV_FAULT FPE_FLTDIV    /* divide by zero floating fault */
  356. #define FPE_FLTUND_FAULT FPE_FLTUND    /* floating underflow fault */
  357.  
  358. #endif /* vax */
  359.  
  360. #ifdef mc68000
  361.  
  362. #define ILL_ILLINSTR_FAULT ILL_ILLOPC    /* illegal instruction fault */
  363. #define ILL_PRIVVIO_FAULT ILL_PRVREG    /* privilege violation fault */
  364. #define ILL_COPROCERR_FAULT ILL_COPERR    /* [coprocessor protocol error fault] */
  365. #define ILL_TRAP1_FAULT    ILL_ILLTRP    /* trap #1 fault */
  366. #define ILL_TRAP2_FAULT    ILL_ILLTRP    /* trap #2 fault */
  367. #define ILL_TRAP3_FAULT    ILL_ILLTRP    /* trap #3 fault */
  368. #define ILL_TRAP4_FAULT    ILL_ILLTRP    /* trap #4 fault */
  369. #define ILL_TRAP5_FAULT    ILL_ILLTRP    /* trap #5 fault */
  370. #define ILL_TRAP6_FAULT    ILL_ILLTRP    /* trap #6 fault */
  371. #define ILL_TRAP7_FAULT    ILL_ILLTRP    /* trap #7 fault */
  372. #define ILL_TRAP8_FAULT    ILL_ILLTRP    /* trap #8 fault */
  373. #define ILL_TRAP9_FAULT    ILL_ILLTRP    /* trap #9 fault */
  374. #define ILL_TRAP10_FAULT ILL_ILLTRP    /* trap #10 fault */
  375. #define ILL_TRAP11_FAULT ILL_ILLTRP    /* trap #11 fault */
  376. #define ILL_TRAP12_FAULT ILL_ILLTRP    /* trap #12 fault */
  377. #define ILL_TRAP13_FAULT ILL_ILLTRP    /* trap #13 fault */
  378. #define ILL_TRAP14_FAULT ILL_ILLTRP    /* trap #14 fault */
  379.  
  380. #define EMT_EMU1010    SI_DFLCODE    /* line 1010 emulator trap */
  381. #define EMT_EMU1111    SI_DFLCODE    /* line 1111 emulator trap */
  382.  
  383. #define FPE_INTDIV_TRAP    FPE_INTDIV    /* integer divide by zero */
  384. #define FPE_CHKINST_TRAP SI_DFLCODE    /* CHK [CHK2] instruction */
  385. #define FPE_TRAPV_TRAP    SI_DFLCODE    /* TRAPV [cpTRAPcc TRAPcc] instr */
  386. #define FPE_FLTBSUN_TRAPSI_DFLCODE    /* [branch or set on unordered cond] */
  387. #define FPE_FLTINEX_TRAP FPE_FLTRES    /* [floating inexact result] */
  388. #define FPE_FLTDIV_TRAP    FPE_FLTDIV    /* [floating divide by zero] */
  389. #define FPE_FLTUND_TRAP    FPE_FLTUND    /* [floating underflow] */
  390. #define FPE_FLTOPERR_TRAP FPE_FLTINV    /* [floating operand error] */
  391. #define FPE_FLTOVF_TRAP    FPE_FLTOVF    /* [floating overflow] */
  392. #define FPE_FLTNAN_TRAP    FPE_FLTINV    /* [floating Not-A-Number] */
  393.  
  394. #ifdef sun
  395. #define FPE_FPA_ENABLE    SI_DFLCODE    /* [FPA not enabled] */
  396. #define FPE_FPA_ERROR    SI_DFLCODE    /* [FPA arithmetic exception] */
  397. #endif /* sun */
  398.  
  399. #endif /* mc68000 */
  400.  
  401. #ifdef sparc
  402.  
  403. #define ILL_STACK    ILL_STKERR    /* bad stack */
  404. #define ILL_ILLINSTR_FAULT ILL_ILLOPC    /* illegal instruction fault */
  405. #define ILL_PRIVINSTR_FAULT ILL_PRVOPC    /* privileged instruction fault */
  406. #define ILL_TRAP_FAULT(n) ILL_ILLTRP     /* trap n fault */
  407.  
  408. #define    EMT_TAG        SI_DFLCODE    /* tag overflow */
  409.  
  410. #define FPE_INTOVF_TRAP    FPE_INTOVF    /* integer overflow */
  411. #define FPE_INTDIV_TRAP    FPE_INTDIV    /* integer divide by zero */
  412. #define FPE_FLTINEX_TRAP FPE_FLTRES    /* [floating inexact result] */
  413. #define FPE_FLTDIV_TRAP    FPE_FLTDIV    /* [floating divide by zero] */
  414. #define FPE_FLTUND_TRAP    FPE_FLTUND    /* [floating underflow] */
  415. #define FPE_FLTOPERR_TRAP FPE_FLTSUB    /* [floating operand error] */
  416. #define FPE_FLTOVF_TRAP    FPE_FLTOVF    /* [floating overflow] */
  417.  
  418. #endif /* sparc */
  419.  
  420. #define BUS_HWERR    BUS_ADRERR    /* misc hardware error (e.g. timeout) */
  421. #define BUS_ALIGN    BUS_ADRALN    /* hardware alignment error */
  422.  
  423. #define SEGV_NOMAP    SEGV_MAPERR    /* no mapping at the fault address */
  424. #define SEGV_PROT    SEGV_ACCERR    /* access exceeded protections */
  425.  
  426. /*
  427.  * The SEGV_CODE(code) will be SEGV_NOMAP, SEGV_PROT, or SEGV_OBJERR.
  428.  * In the SEGV_OBJERR case, doing a SEGV_ERRNO(code) gives an errno value
  429.  * reported by the underlying file object mapped at the fault address.
  430.  */
  431.  
  432. #define SIG_NOADDR    ((char *)~0)
  433.  
  434. #define    SEGV_CODE(fc)    ((fc) & 0xff)
  435. #define    SEGV_ERRNO(fc)    ((unsigned)(fc) >> 8)
  436. #define    SEGV_MAKE_ERR(e) (((e) << 8) | SEGV_MAPERR)
  437.  
  438. #if defined(lint)
  439. #define BADSIG (void(*)())0
  440. #else
  441. #define BADSIG (void(*)())-1
  442. #endif
  443.  
  444. #endif /*_UCB_SYS_SIGNAL_H*/
  445.