summaryrefslogtreecommitdiffstats
path: root/sys/amd64/ia32/ia32_signal.c
diff options
context:
space:
mode:
authordavidxu <davidxu@FreeBSD.org>2006-10-05 01:56:11 +0000
committerdavidxu <davidxu@FreeBSD.org>2006-10-05 01:56:11 +0000
commit0fa66af83d7752ee96c7e9f5e372d31f89e496f3 (patch)
tree9fda0bb64da7a7e4f4dbd5cce476614524ce6c08 /sys/amd64/ia32/ia32_signal.c
parent4503c0ed680d09ab549039827e23db4cecc4795d (diff)
downloadFreeBSD-src-0fa66af83d7752ee96c7e9f5e372d31f89e496f3.zip
FreeBSD-src-0fa66af83d7752ee96c7e9f5e372d31f89e496f3.tar.gz
Move some declaration of 32-bit signal structures into file
freebsd32-signal.h, implement sigtimedwait and sigwaitinfo system calls.
Diffstat (limited to 'sys/amd64/ia32/ia32_signal.c')
-rw-r--r--sys/amd64/ia32/ia32_signal.c26
1 files changed, 5 insertions, 21 deletions
diff --git a/sys/amd64/ia32/ia32_signal.c b/sys/amd64/ia32/ia32_signal.c
index a29abf0..1d693b4 100644
--- a/sys/amd64/ia32/ia32_signal.c
+++ b/sys/amd64/ia32/ia32_signal.c
@@ -67,6 +67,7 @@ __FBSDID("$FreeBSD$");
#include <vm/vm_object.h>
#include <vm/vm_extern.h>
+#include <compat/freebsd32/freebsd32_signal.h>
#include <compat/freebsd32/freebsd32_util.h>
#include <compat/freebsd32/freebsd32_proto.h>
#include <compat/ia32/ia32_signal.h>
@@ -298,7 +299,7 @@ static void
freebsd4_ia32_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask)
{
struct ia32_sigframe4 sf, *sfp;
- struct ia32_siginfo siginfo;
+ struct siginfo32 siginfo;
struct proc *p;
struct thread *td;
struct sigacts *psp;
@@ -308,7 +309,7 @@ freebsd4_ia32_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask)
td = curthread;
p = td->td_proc;
- siginfo_to_ia32siginfo(&ksi->ksi_info, &siginfo);
+ siginfo_to_siginfo32(&ksi->ksi_info, &siginfo);
PROC_LOCK_ASSERT(p, MA_OWNED);
sig = siginfo.si_signo;
@@ -407,7 +408,7 @@ void
ia32_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask)
{
struct ia32_sigframe sf, *sfp;
- struct ia32_siginfo siginfo;
+ struct siginfo32 siginfo;
struct proc *p;
struct thread *td;
struct sigacts *psp;
@@ -416,7 +417,7 @@ ia32_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask)
int oonstack;
int sig;
- siginfo_to_ia32siginfo(&ksi->ksi_info, &siginfo);
+ siginfo_to_siginfo32(&ksi->ksi_info, &siginfo);
td = curthread;
p = td->td_proc;
PROC_LOCK_ASSERT(p, MA_OWNED);
@@ -741,20 +742,3 @@ ia32_setregs(td, entry, stack, ps_strings)
pcb->pcb_flags |= PCB_FULLCTX;
td->td_retval[1] = 0;
}
-
-void
-siginfo_to_ia32siginfo(siginfo_t *src, struct ia32_siginfo *dst)
-{
- dst->si_signo = src->si_signo;
- dst->si_errno = src->si_errno;
- dst->si_code = src->si_code;
- dst->si_pid = src->si_pid;
- dst->si_uid = src->si_uid;
- dst->si_status = src->si_status;
- dst->si_addr = dst->si_addr;
- dst->si_value.sigval_int = src->si_value.sival_int;
- dst->si_band = src->si_band;
- dst->si_trapno = src->si_trapno;
- dst->si_timerid = src->si_timerid;
- dst->si_overrun = src->si_overrun;
-}
OpenPOWER on IntegriCloud