1 /* 2 * Copyright (c) 1985 Regents of the University of California. 3 * All rights reserved. The Berkeley software License Agreement 4 * specifies the terms and conditions for redistribution. 5 */ 6 7 #if defined(LIBC_SCCS) && !defined(lint) 8 static char sccsid[] = "@(#)siginterrupt.c 5.2 (Berkeley) 03/09/86"; 9 #endif LIBC_SCCS and not lint 10 11 #include <signal.h> 12 13 /* 14 * Set signal state to prevent restart of system calls 15 * after an instance of the indicated signal. 16 */ 17 siginterrupt(sig, flag) 18 int sig, flag; 19 { 20 struct sigvec sv; 21 int ret; 22 23 if ((ret = sigvec(sig, 0, &sv)) < 0) 24 return (ret); 25 if (flag) 26 sv.sv_flags |= SV_INTERRUPT; 27 else 28 sv.sv_flags &= ~SV_INTERRUPT; 29 return (sigvec(sig, &sv, 0)); 30 } 31