diff options
author | davidxu <davidxu@FreeBSD.org> | 2006-10-05 01:56:11 +0000 |
---|---|---|
committer | davidxu <davidxu@FreeBSD.org> | 2006-10-05 01:56:11 +0000 |
commit | 0fa66af83d7752ee96c7e9f5e372d31f89e496f3 (patch) | |
tree | 9fda0bb64da7a7e4f4dbd5cce476614524ce6c08 /sys/amd64/ia32 | |
parent | 4503c0ed680d09ab549039827e23db4cecc4795d (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/amd64/ia32/ia32_signal.c | 26 |
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; -} |