Initial revision

This commit is contained in:
ceriel
1987-02-20 14:36:01 +00:00
parent 506d59a939
commit 88da4849b4
167 changed files with 2574 additions and 0 deletions

35
mach/sun3/libsys/sigvec.c Normal file
View File

@@ -0,0 +1,35 @@
#include "syscall.h"
#include <errno.h>
struct sigvec { int (*handler)(); int mask,flags; };
int (*(_sigfunc[32]))();
extern int _sigtramp();
sigvec(sig,vec,ovec)
register struct sigvec *vec;
struct sigvec *ovec;
{
struct sigvec tmp;
int (*old)();
if ((unsigned) sig >= 32) {
errno = EINVAL;
return -1;
}
old = _sigfunc[sig];
if (vec) {
tmp = *vec;
vec = &tmp;
if (vec->handler && vec->handler != (int (*)()) 1) {
_sigfunc[sig] = vec->handler;
vec->handler = _sigtramp;
}
}
if (syscall(SYS_sigvec,sig,vec,ovec) < 0) {
_sigfunc[sig] = old;
return -1;
}
if (ovec->handler == _sigtramp) {
ovec->handler = old;
}
return 0;
}