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