1 /***********************************************************************
3 * This software is part of the ast package *
4 * Copyright (c) 1985-2010 AT&T Intellectual Property *
5 * and is licensed under the *
6 * Common Public License, Version 1.0 *
7 * by AT&T Intellectual Property *
9 * A copy of the License is available at *
10 * http://www.opensource.org/licenses/cpl1.0.txt *
11 * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
13 * Information and Software Systems Research *
17 * Glenn Fowler <gsf@research.att.com> *
18 * David Korn <dgk@research.att.com> *
19 * Phong Vo <kpv@research.att.com> *
21 ***********************************************************************/
25 * signal that disables syscall restart on interrupt with clear signal mask
26 * fun==SIG_DFL also unblocks signal
32 #define signal ______signal
46 #if defined(__EXPORT__)
47 #define extern __EXPORT__
54 #define SV_INTERRUPT SV_ABORT
57 #if !_std_signal && (_lib_sigaction && defined(SA_NOCLDSTOP) || _lib_sigvec && defined(SV_INTERRUPT))
59 #if !defined(SA_NOCLDSTOP) || !defined(SA_INTERRUPT) && defined(SV_INTERRUPT)
61 #define SA_INTERRUPT SV_INTERRUPT
63 #define sigaction sigvec
65 #define sigemptyset(p) (*(p)=0)
67 #define sa_flags sv_flags
69 #define sa_handler sv_handler
71 #define sa_mask sv_mask
75 signal(int sig
, Sig_handler_t fun
)
90 unblock
= fun
== SIG_DFL
;
92 flags
= sig
& ~SIGNO_MASK
;
95 memzero(&na
, sizeof(na
));
97 #if defined(SA_INTERRUPT) || defined(SA_RESTART)
100 #if defined(SIGIO) || defined(SIGTSTP) || defined(SIGTTIN) || defined(SIGTTOU)
113 #if defined(SA_RESTART)
114 na
.sa_flags
= SA_RESTART
;
119 #if defined(SA_INTERRUPT)
120 na
.sa_flags
= SA_INTERRUPT
;
125 if (sigaction(sig
, &na
, &oa
))
129 return oa
.sa_handler
;