signal.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:7k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* signal.h - signal facility library header */
  2. /* Copyright 1984-1994 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 02k,09nov00,jgn  remove inaccurate comment from SIGKILL (SPR #35996)
  7. 02j,19jul00,jgn  add thread cancellation signal for pthreads support +
  8.  update the sigwait prototype to match the POSIX version
  9. 02i,11nov94,kdl  provide paramless func ptrs in structs, for non-ANSI (SPR 3742)
  10. 02h,10nov94,caf  adjusted placement of _ASMLANGUAGE conditional.
  11. 02g,06oct93,yao  added _ASMLANGUAGE conditional.
  12. 02h,12jan94,kdl  added sigqueue() prototype.
  13. 02g,09nov93,rrr  update to posix 1003.4 draft 14
  14. 02f,05feb93,rrr  fixed spr 1986 (SIG_ERR ... prototype) and
  15.  spr 1906 (signal numbers to match sun os)
  16. 02e,15oct92,rrr  silenced warnings
  17. 02d,22sep92,rrr  added support for c++
  18. 02c,22aug92,rrr  added bsd prototypes.
  19. 02b,27jul92,smb  added prototype for raise().
  20. 02a,04jul92,jcf  cleaned up.
  21. 01b,26may92,rrr  the tree shuffle
  22. 01a,19feb92,rrr  written from posix spec
  23. */
  24. #ifndef __INCsignalh
  25. #define __INCsignalh
  26. #ifdef __cplusplus
  27. extern "C" {
  28. #endif
  29. #ifndef _ASMLANGUAGE
  30. #include "sigevent.h"
  31. struct timespec;
  32. #endif /* _ASMLANGUAGE */
  33. #define SIGEV_NONE 0
  34. #define SIGEV_SIGNAL 1
  35. /*
  36.  * Signal Numbers:
  37.  *  Required .1 signals  1-13
  38.  *  Job Control signals 14-19 (not implemented but must be defined)
  39.  *  Realtime signals 20-27
  40.  */
  41. #define SIGHUP 1 /* hangup */
  42. #define SIGINT 2 /* interrupt */
  43. #define SIGQUIT 3 /* quit */
  44. #define SIGILL 4 /* illegal instruction (not reset when caught) */
  45. #define SIGTRAP 5 /* trace trap (not reset when caught) */
  46. #define SIGABRT 6 /* used by abort, replace SIGIOT in the future */
  47. #define SIGEMT 7 /* EMT instruction */
  48. #define SIGFPE 8 /* floating point exception */
  49. #define SIGKILL 9 /* kill */
  50. #define SIGBUS 10 /* bus error */
  51. #define SIGSEGV 11 /* segmentation violation */
  52. #define SIGFMT 12 /* STACK FORMAT ERROR (not posix) */
  53. #define SIGPIPE 13 /* write on a pipe with no one to read it */
  54. #define SIGALRM 14 /* alarm clock */
  55. #define SIGTERM 15 /* software termination signal from kill */
  56. #define SIGCNCL 16 /* pthreads cancellation signal */
  57. #define SIGSTOP 17 /* sendable stop signal not from tty */
  58. #define SIGTSTP 18 /* stop signal from tty */
  59. #define SIGCONT 19 /* continue a stopped process */
  60. #define SIGCHLD 20 /* to parent on child stop or exit */
  61. #define SIGTTIN 21 /* to readers pgrp upon background tty read */
  62. #define SIGTTOU 22 /* like TTIN for output if (tp->t_local&LTOSTOP) */
  63. #define SIGUSR1 30 /* user defined signal 1 */
  64. #define SIGUSR2 31 /* user defined signal 2 */
  65. #define SIGRTMIN 23 /* Realtime signal min */
  66. #define SIGRTMAX 29 /* Realtime signal max */
  67. #define _NSIGS 31
  68. #ifndef _ASMLANGUAGE
  69. /*
  70.  * ANSI Args and returns from signal()
  71.  */
  72. #if defined(__STDC__) || defined(__cplusplus)
  73. #define SIG_ERR         (void (*)(int))-1
  74. #define SIG_DFL         (void (*)(int))0
  75. #define SIG_IGN         (void (*)(int))1
  76. #else
  77. #define SIG_ERR         (void (*)())-1
  78. #define SIG_DFL         (void (*)())0
  79. #define SIG_IGN         (void (*)())1
  80. #endif
  81. /*
  82.  * The sa_flags in struct sigaction
  83.  */
  84. #define SA_NOCLDSTOP 0x0001 /* Do not generate SIGCHLD when children stop */
  85. #define SA_SIGINFO 0x0002 /* Pass additional siginfo structure */
  86. #define SA_ONSTACK 0x0004 /* (Not posix) Run on sigstack */
  87. #define SA_INTERRUPT 0x0008 /* (Not posix) Don't restart the function */
  88. #define SA_RESETHAND 0x0010 /* (Not posix) Reset the handler, like sysV */
  89. /*
  90.  * The how in sigprocmask()
  91.  */
  92. #define SIG_BLOCK 1
  93. #define SIG_UNBLOCK 2
  94. #define SIG_SETMASK 3
  95. /*
  96.  * The si_code returned in siginfo
  97.  */
  98. #define SI_SYNC 0 /* (Not posix) gernerated by hardware */
  99. #define SI_KILL 1 /* signal from .1 kill() function */
  100. #define SI_QUEUE 2 /* signal from .4 sigqueue() function */
  101. #define SI_TIMER 3 /* signal from expiration of a .4 timer */
  102. #define SI_ASYNCIO 4 /* signal from completion of an async I/O */
  103. #define SI_MESGQ 5 /* signal from arrival of a message */
  104. typedef unsigned long sigset_t;
  105. typedef unsigned char sig_atomic_t;
  106. typedef struct siginfo
  107.     {
  108.     int si_signo;
  109.     int si_code;
  110.     union sigval si_value;
  111.     } siginfo_t;
  112. struct sigaction
  113.     {
  114.     union
  115. {
  116. #if defined(__STDC__) || defined(__cplusplus)
  117. void (*__sa_handler)(int);
  118. void (*__sa_sigaction)(int, siginfo_t *, void *);
  119. #else
  120. void (*__sa_handler)();
  121. void (*__sa_sigaction)();
  122. #endif /* __STDC__ */
  123. } sa_u;
  124. #define sa_handler sa_u.__sa_handler
  125. #define sa_sigaction sa_u.__sa_sigaction
  126.     sigset_t sa_mask;
  127.     int sa_flags;
  128.     };
  129. #if defined(__STDC__) || defined(__cplusplus)
  130. extern void  (*signal(int __sig, void (*__handler)(int)))(int);
  131. extern int      raise(int __signo);
  132. extern int kill(int __tid, int __signo);
  133. extern int  sigemptyset(sigset_t *__set);
  134. extern int  sigfillset(sigset_t *__set);
  135. extern int  sigaddset(sigset_t *__set, int __signo);
  136. extern int  sigdelset(sigset_t *__set, int __signo);
  137. extern int  sigismember(const sigset_t *__set, int __signo);
  138. extern int  sigaction(int __sig, const struct sigaction *__act,
  139.   struct sigaction *__oact);
  140. extern int  sigprocmask(int __how, const sigset_t *__set, sigset_t *__oset);
  141. extern int  sigpending(sigset_t *__set);
  142. extern int  sigsuspend(const sigset_t *__sigmask);
  143. extern int  sigwait(const sigset_t *__set, int* sig);
  144. extern int  sigwaitinfo(const sigset_t *__set, struct siginfo *__value);
  145. extern int  sigtimedwait(const sigset_t *__set, struct siginfo *__value,
  146. const struct timespec *);
  147. extern int sigqueue (int tid, int signo, const union sigval value);
  148. #else
  149. extern void  (*signal())();
  150. extern int      raise();
  151. extern int kill();
  152. extern int  sigemptyset();
  153. extern int  sigfillset();
  154. extern int  sigaddset();
  155. extern int  sigdelset();
  156. extern int  sigismember();
  157. extern int  sigaction();
  158. extern int  sigprocmask();
  159. extern int  sigpending();
  160. extern int  sigsuspend();
  161. extern int  sigwait();
  162. extern int  sigwaitinfo();
  163. extern int  sigtimedwait();
  164. extern int sigqueue ();
  165. #endif /* __STDC__ */
  166. /*
  167.  * From here to the end is not posix, it is for bsd compatibility.
  168.  */
  169. #define SV_ONSTACK SA_ONSTACK
  170. #define SV_INTERRUPT SA_INTERRUPT
  171. #define SV_RESETHAND SA_RESETHAND
  172. #define sigmask(m) (1 << ((m)-1))
  173. #define SIGMASK(m) (1 << ((m)-1))
  174. struct sigvec
  175.     {
  176. #if defined(__STDC__) || defined(__cplusplus)
  177.     void (*sv_handler)(int); /* signal handler */
  178. #else
  179.     void (*sv_handler)(); /* signal handler */
  180. #endif /* __STDC__ */
  181.     int sv_mask; /* signal mask to apply */
  182.     int sv_flags; /* see signal options */
  183.     };
  184. struct sigcontext;
  185. #if defined(__STDC__) || defined(__cplusplus)
  186. extern int  sigvec(int __sig, const struct sigvec *__vec,
  187.        struct sigvec *__ovec);
  188. extern void  sigreturn(struct sigcontext *__context);
  189. extern int  sigsetmask(int __mask);
  190. extern int  sigblock(int __mask);
  191. #else
  192. extern int  sigvec();
  193. extern void  sigreturn();
  194. extern int  sigsetmask();
  195. extern int  sigblock();
  196. #endif
  197. #endif /* _ASMLANGUAGE */
  198. #ifdef __cplusplus
  199. }
  200. #endif
  201. #endif /* __INCsignalh */