1 /*
2 * Copyright (c) 1989, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * %sccs.include.redist.c%
6 */
7
8 #if defined(LIBC_SCCS) && !defined(lint)
9 static char sccsid[] = "@(#)sigcompat.c 8.1 (Berkeley) 06/02/93";
10 #endif /* LIBC_SCCS and not lint */
11
12 #include <sys/param.h>
13 #include <signal.h>
14
sigvec(signo,sv,osv)15 sigvec(signo, sv, osv)
16 int signo;
17 struct sigvec *sv, *osv;
18 {
19 int ret;
20
21 if (sv)
22 sv->sv_flags ^= SV_INTERRUPT; /* !SA_INTERRUPT */
23 ret = sigaction(signo, (struct sigaction *)sv, (struct sigaction *)osv);
24 if (ret == 0 && osv)
25 osv->sv_flags ^= SV_INTERRUPT; /* !SA_INTERRUPT */
26 return (ret);
27 }
28
sigsetmask(mask)29 sigsetmask(mask)
30 int mask;
31 {
32 int omask, n;
33
34 n = sigprocmask(SIG_SETMASK, (sigset_t *) &mask, (sigset_t *) &omask);
35 if (n)
36 return (n);
37 return (omask);
38 }
39
sigblock(mask)40 sigblock(mask)
41 int mask;
42 {
43 int omask, n;
44
45 n = sigprocmask(SIG_BLOCK, (sigset_t *) &mask, (sigset_t *) &omask);
46 if (n)
47 return (n);
48 return (omask);
49 }
50
sigpause(mask)51 sigpause(mask)
52 int mask;
53 {
54 return (sigsuspend((sigset_t *)&mask));
55 }
56