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 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 { 54 return (sigsuspend((sigset_t *)&mask)); 55 } 56