Commit | Line | Data |
---|---|---|
b1a3411a MK |
1 | /* |
2 | * Copyright (c) 1989 The Regents of the University of California. | |
3 | * All rights reserved. | |
4 | * | |
269a7923 | 5 | * %sccs.include.redist.c% |
b1a3411a MK |
6 | */ |
7 | ||
8 | #if defined(LIBC_SCCS) && !defined(lint) | |
3d26fdf0 | 9 | static char sccsid[] = "@(#)sigcompat.c 5.3 (Berkeley) %G%"; |
b1a3411a MK |
10 | #endif /* LIBC_SCCS and not lint */ |
11 | ||
12 | #include <sys/param.h> | |
3d26fdf0 | 13 | #include <signal.h> |
b1a3411a MK |
14 | |
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 | ||
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 | ||
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 | ||
51 | sigpause(mask) | |
52 | int mask; | |
53 | { | |
b1a3411a MK |
54 | return (sigsuspend((sigset_t *)&mask)); |
55 | } |