home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / os / linux / 6812 < prev    next >
Encoding:
Text File  |  1992-07-27  |  1.7 KB  |  80 lines

  1. Newsgroups: comp.os.linux
  2. Path: sparky!uunet!morrow.stanford.edu!bir7
  3. From: bir7@leland.Stanford.EDU (Ross Biro)
  4. Subject: Re: sigblock, sigpause...
  5. Message-ID: <1992Jul27.235127.8941@morrow.stanford.edu>
  6. Sender: news@morrow.stanford.edu (News Service)
  7. Organization: DSG, Stanford University, CA 94305, USA
  8. References: <14p8neINNpr0@matt.ksu.ksu.edu> <1992Jul27.210933.29135@htsa.aha.nl>
  9. Date: Mon, 27 Jul 1992 23:51:27 GMT
  10. Lines: 68
  11.  
  12. In article <1992Jul27.210933.29135@htsa.aha.nl> miquels@htsa.aha.nl (Miquel van Smoorenburg) writes:
  13. >#define sigblock(what) sigsetmask(siggetmask()|(what))
  14. >#define sigpause(what) sigsuspend(&what)
  15. >
  16.     I did this to help port BIND code, not perfect but useable.
  17.  
  18. Ross Biro bir7@leland.stanford.edu 
  19. Member League for Programming Freedom (LPF)
  20. mail league@prep.ai.mit.edu for information
  21.  
  22. ----- cut here -----
  23. /* sigvec.h */
  24. #ifndef _SIGVEC_H
  25. #define _SIGVEC_H
  26.  
  27. struct sigvec
  28. {
  29.     struct sigaction sa;
  30. };
  31.  
  32. #define sv_mask sa.sa_mask
  33. #define sv_handler sa.sa_handler
  34.  
  35. static inline int
  36. sigmask (int sig)
  37. {
  38.     return (1 << (sig-1));
  39. }
  40.  
  41. static inline int
  42. sigvec (int sig, struct sigvec *sv, struct sigvec *oldvec)
  43. {
  44.     return (sigaction (sig, &(sv->sa), &(oldvec->sa)));
  45. }
  46.  
  47. static inline int
  48. sigblock (int mask)
  49. {
  50.     int err;
  51.     int omask;
  52.     err = sigprocmask (SIG_BLOCK, &mask, &omask);
  53.     if (err < 0) return (err);
  54.     return (omask);
  55. }
  56.  
  57. static inline int
  58. sigsetmask (int mask)
  59. {
  60.     int err;
  61.     int omask;
  62.     err = sigprocmask (SIG_SETMASK, &mask, &omask);
  63.     if (err < 0) return (err);
  64.     return (omask);
  65. }
  66.  
  67. static inline int
  68. sigpause (int mask)
  69. {
  70.     return (sigsuspend (&mask));
  71. }
  72.  
  73. #define vfork fork
  74.  
  75. #endif
  76. -- 
  77. Ross Biro bir7@leland.stanford.edu 
  78. Member League for Programming Freedom (LPF)
  79. mail league@prep.ai.mit.edu for information
  80.