-ENTRY(signal)
- subl2 $24,sp # struct sigvec osv, sv;
- movl 8(ap),-24(fp) # sv.sv_handler = a;
- clrq -20(fp) # sv.sv_mask = sv.sv_onstack = 0;
- pushal -12(fp) # &osv
- pushal -24(fp) # &sv
- pushl 4(ap) # s
- moval -4(sp),ap
- chmk $SYS_sigvec # sigvec(s, &sv, &osv)
- jcs err
- movl -12(fp),r0 # return osv.sv_handler;
- ret
-err:
- .globl _errno
- movl r0,_errno
- mnegl $1,r0
- ret
+ sa.sa_handler = a;
+ sigemptyset(&sa.sa_mask);
+ sa.sa_flags = 0;
+ if (!sigismember(&_sigintr, s))
+ sa.sa_flags |= SA_RESTART;
+ if (sigaction(s, &sa, &osa) < 0)
+ return (BADSIG);
+ return (osa.sa_handler);
+}