(no message)
[unix-history] / usr / src / lib / libc / compat-43 / sigcompat.c
CommitLineData
b1a3411a
MK
1/*
2 * Copyright (c) 1989 The Regents of the University of California.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms are permitted
6 * provided that the above copyright notice and this paragraph are
7 * duplicated in all such forms and that any documentation,
8 * advertising materials, and other materials related to such
9 * distribution and use acknowledge that the software was developed
10 * by the University of California, Berkeley. The name of the
11 * University may not be used to endorse or promote products derived
12 * from this software without specific prior written permission.
13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16 */
17
18#if defined(LIBC_SCCS) && !defined(lint)
19static char sccsid[] = "@(#)sigcompat.c 5.1 (Berkeley) %G%";
20#endif /* LIBC_SCCS and not lint */
21
22#include <sys/param.h>
23#include <sys/signal.h>
24
25sigvec(signo, sv, osv)
26 int signo;
27 struct sigvec *sv, *osv;
28{
29 int ret;
30
31 if (sv)
32 sv->sv_flags ^= SV_INTERRUPT; /* !SA_INTERRUPT */
33 ret = sigaction(signo, (struct sigaction *)sv, (struct sigaction *)osv);
34 if (ret == 0 && osv)
35 osv->sv_flags ^= SV_INTERRUPT; /* !SA_INTERRUPT */
36 return (ret);
37}
38
39sigsetmask(mask)
40 int mask;
41{
42 int omask, n;
43
44 n = sigprocmask(SIG_SETMASK, (sigset_t *) &mask, (sigset_t *) &omask);
45 if (n)
46 return (n);
47 return (omask);
48}
49
50sigblock(mask)
51 int mask;
52{
53 int omask, n;
54
55 n = sigprocmask(SIG_BLOCK, (sigset_t *) &mask, (sigset_t *) &omask);
56 if (n)
57 return (n);
58 return (omask);
59}
60
61sigpause(mask)
62 int mask;
63{
64
65 return (sigsuspend((sigset_t *)&mask));
66}