Enable SA_SIGINFO for COMPAT_DARWIN
This commit is contained in:
parent
c3eb252046
commit
d2b4a2c0fa
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: darwin_machdep.c,v 1.11 2003/12/16 13:36:18 manu Exp $ */
|
||||
/* $NetBSD: darwin_machdep.c,v 1.12 2003/12/16 13:38:26 manu Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2002 The NetBSD Foundation, Inc.
|
||||
|
@ -37,7 +37,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: darwin_machdep.c,v 1.11 2003/12/16 13:36:18 manu Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: darwin_machdep.c,v 1.12 2003/12/16 13:38:26 manu Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
|
@ -128,7 +128,7 @@ darwin_sendsig(ksi, mask)
|
|||
sig = 0;
|
||||
}
|
||||
|
||||
sf.duc.si.darwin_si_signo = sig;
|
||||
native_to_darwin_siginfo(ksi, &sf.duc.si);
|
||||
sf.duc.uctx.uc_onstack = onstack;
|
||||
native_sigset_to_sigset13(mask, &sf.duc.uctx.uc_sigmask);
|
||||
sf.duc.uctx.uc_stack.ss_sp = (char *)sfp;
|
||||
|
@ -160,7 +160,10 @@ darwin_sendsig(ksi, mask)
|
|||
/* Prepare registers */
|
||||
tf->fixreg[1] = (u_long)sfp;
|
||||
tf->fixreg[3] = (u_long)catcher;
|
||||
tf->fixreg[4] = 1; /* 1 => without siginfo, 2 => with siginfo */
|
||||
if (SIGACTION(p, sig).sa_flags & SA_SIGINFO)
|
||||
tf->fixreg[4] = 2; /* with siginfo */
|
||||
else
|
||||
tf->fixreg[4] = 1; /* without siginfo */
|
||||
tf->fixreg[5] = (u_long)sig;
|
||||
tf->fixreg[6] = (u_long)&sfp->duc.si;
|
||||
tf->fixreg[7] = (u_long)&sfp->duc.uctx;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: darwin_signal.c,v 1.12 2003/12/09 12:13:44 manu Exp $ */
|
||||
/* $NetBSD: darwin_signal.c,v 1.13 2003/12/16 13:38:25 manu Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2002 The NetBSD Foundation, Inc.
|
||||
|
@ -37,7 +37,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: darwin_signal.c,v 1.12 2003/12/09 12:13:44 manu Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: darwin_signal.c,v 1.13 2003/12/16 13:38:25 manu Exp $");
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/param.h>
|
||||
|
@ -187,3 +187,22 @@ darwin_sigfilter(l, ksi)
|
|||
|
||||
return EINVAL;
|
||||
}
|
||||
|
||||
void
|
||||
native_to_darwin_siginfo(ksi, dsi)
|
||||
const struct ksiginfo *ksi;
|
||||
struct darwin___siginfo *dsi;
|
||||
{
|
||||
dsi->darwin_si_signo = ksi->ksi_signo;
|
||||
dsi->darwin_si_errno = ksi->ksi_errno;
|
||||
dsi->darwin_si_code = ksi->ksi_code;
|
||||
dsi->darwin_si_pid = ksi->ksi_pid;
|
||||
dsi->darwin_si_uid = ksi->ksi_uid;
|
||||
dsi->darwin_si_status = ksi->ksi_status;
|
||||
dsi->darwin_si_addr = ksi->ksi_addr;
|
||||
(void)memcpy(&dsi->darwin_si_value,
|
||||
&ksi->ksi_sigval, sizeof(dsi->darwin_si_value));
|
||||
dsi->darwin_si_band = ksi->ksi_band;
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: darwin_signal.h,v 1.10 2003/12/03 18:40:07 manu Exp $ */
|
||||
/* $NetBSD: darwin_signal.h,v 1.11 2003/12/16 13:38:26 manu Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2002 The NetBSD Foundation, Inc.
|
||||
|
@ -82,6 +82,7 @@ struct darwin___sigaction {
|
|||
void darwin_sendsig(const ksiginfo_t *, const sigset_t *);
|
||||
void darwin_trapsignal(struct lwp *, const struct ksiginfo *);
|
||||
int darwin_sigfilter(struct lwp *, const struct ksiginfo *);
|
||||
void native_to_darwin_siginfo(const struct ksiginfo *, struct darwin___siginfo *);
|
||||
|
||||
#endif /* _DARWIN_SIGNAL_H_ */
|
||||
|
||||
|
|
Loading…
Reference in New Issue