home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.os.linux
- Path: sparky!uunet!morrow.stanford.edu!bir7
- From: bir7@leland.Stanford.EDU (Ross Biro)
- Subject: Re: sigblock, sigpause...
- Message-ID: <1992Jul27.235127.8941@morrow.stanford.edu>
- Sender: news@morrow.stanford.edu (News Service)
- Organization: DSG, Stanford University, CA 94305, USA
- References: <14p8neINNpr0@matt.ksu.ksu.edu> <1992Jul27.210933.29135@htsa.aha.nl>
- Date: Mon, 27 Jul 1992 23:51:27 GMT
- Lines: 68
-
- In article <1992Jul27.210933.29135@htsa.aha.nl> miquels@htsa.aha.nl (Miquel van Smoorenburg) writes:
- >#define sigblock(what) sigsetmask(siggetmask()|(what))
- >#define sigpause(what) sigsuspend(&what)
- >
- I did this to help port BIND code, not perfect but useable.
-
- Ross Biro bir7@leland.stanford.edu
- Member League for Programming Freedom (LPF)
- mail league@prep.ai.mit.edu for information
-
- ----- cut here -----
- /* sigvec.h */
- #ifndef _SIGVEC_H
- #define _SIGVEC_H
-
- struct sigvec
- {
- struct sigaction sa;
- };
-
- #define sv_mask sa.sa_mask
- #define sv_handler sa.sa_handler
-
- static inline int
- sigmask (int sig)
- {
- return (1 << (sig-1));
- }
-
- static inline int
- sigvec (int sig, struct sigvec *sv, struct sigvec *oldvec)
- {
- return (sigaction (sig, &(sv->sa), &(oldvec->sa)));
- }
-
- static inline int
- sigblock (int mask)
- {
- int err;
- int omask;
- err = sigprocmask (SIG_BLOCK, &mask, &omask);
- if (err < 0) return (err);
- return (omask);
- }
-
- static inline int
- sigsetmask (int mask)
- {
- int err;
- int omask;
- err = sigprocmask (SIG_SETMASK, &mask, &omask);
- if (err < 0) return (err);
- return (omask);
- }
-
- static inline int
- sigpause (int mask)
- {
- return (sigsuspend (&mask));
- }
-
- #define vfork fork
-
- #endif
- --
- Ross Biro bir7@leland.stanford.edu
- Member League for Programming Freedom (LPF)
- mail league@prep.ai.mit.edu for information
-