home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / gnu / lucid / lemacs-19.6 / src / emacssignal.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-01-26  |  1.7 KB  |  64 lines

  1.  
  2. #ifndef _EMACSSIGNAL_H_
  3. #define _EMACSSIGNAL_H_
  4.  
  5. #ifdef POSIX_SIGNALS
  6.  
  7. #define SIGMASKTYPE sigset_t
  8. #define SIGEMPTYMASK (signal_empty_mask)
  9. #define SIGFULLMASK (signal_full_mask)
  10. extern sigset_t signal_empty_mask, signal_full_mask;
  11.  
  12. #ifdef sigmask
  13. #undef sigmask
  14. #endif
  15. #define sigmask(SIG) \
  16. (_mask = SIGEMPTYMASK, sigaddset (&_mask, SIG), _mask)
  17.  
  18. /* Local mask is used to avoid problems if code using any of the macros 
  19.    below could be reentered due to a signal occurring.
  20.    This can't happen in Emacs 18.58, but just to be safe... - DJB
  21.    These macros require GCC.  */
  22. #define sigpause(SIG)    ({ sigset_t _mask; sys_sigpause(SIG); })
  23. #define sigblock(SIG)    ({ sigset_t _mask; sys_sigblock(SIG); })
  24. #define sigunblock(SIG)  ({ sigset_t _mask; sys_sigunblock(SIG); })
  25. #define sigsetmask(SIG)  ({ sigset_t _mask; sys_sigsetmask(SIG); })
  26. #define sighold(SIG)     ONLY_USED_IN_BSD_4_1
  27. #define sigrelse(SIG)    ONLY_USED_IN_BSD_4_1
  28.  
  29. int (*sys_signal (int signal_number, int (*action)())) ();
  30. int sys_sigpause (sigset_t new_mask);
  31. sigset_t sys_sigblock (sigset_t new_mask);
  32. sigset_t sys_sigunblock (sigset_t new_mask);
  33. sigset_t sys_sigsetmask (sigset_t new_mask);
  34.  
  35. #define sys_sigdel(MASK,SIG) sigdelset(&MASK,SIG)
  36. #endif /* POSIX_SIGNALS */
  37.  
  38. #ifndef SIGMASKTYPE
  39. #define SIGMASKTYPE int
  40. #endif
  41.  
  42. #ifndef SIGEMPTYMASK
  43. #define SIGEMPTYMASK 0
  44. #endif
  45.  
  46. #ifndef SIGFULLMASK
  47. #define SIGFULLMASK 0xffffffff
  48. #endif
  49.  
  50. #ifndef sigmask
  51. #define sigmask(no) (1L << ((no) - 1))
  52. #endif
  53.  
  54. #ifndef sigunblock
  55. #define sigunblock(SIG) \
  56. { SIGMASKTYPE omask = sigblock (SIGFULLMASK); sigsetmask (omask & ~SIG); }
  57. #endif
  58.  
  59. #ifndef sys_sigdel
  60. #define sys_sigdel(MASK,SIG) MASK &= ~(1 << SIG)
  61. #endif
  62.  
  63. #endif /* _EMACSSIGNAL_H_ */
  64.