Deleted Added
full compact
26c26
< * $FreeBSD: head/sys/compat/freebsd32/freebsd32_misc.c 113859 2003-04-22 18:23:49Z jhb $
---
> * $FreeBSD: head/sys/compat/freebsd32/freebsd32_misc.c 114987 2003-05-14 04:10:49Z peter $
77,79c77,79
< #include <ia64/ia32/ia32_util.h>
< #include <ia64/ia32/ia32.h>
< #include <ia64/ia32/ia32_proto.h>
---
> #include <amd64/ia32/ia32_util.h>
> #include <amd64/ia32/ia32.h>
> #include <amd64/ia32/ia32_proto.h>
441a442
> #ifdef __ia64__
487a489
> #endif
499a502
> #ifdef __ia64__
569a573
> #endif
655a660,668
> struct kevent32 {
> u_int32_t ident; /* identifier for this event */
> short filter; /* filter for event */
> u_short flags;
> u_int fflags;
> int32_t data;
> u_int32_t udata; /* opaque user data identifier */
> };
>
656a670,737
> ia32_kevent(struct thread *td, struct ia32_kevent_args *uap)
> {
> int error;
> caddr_t sg;
> struct timespec32 ts32;
> struct timespec ts;
> struct kevent32 ks32;
> struct kevent *ks;
> struct kevent_args a;
> int i;
>
> sg = stackgap_init();
>
> a.fd = uap->fd;
> a.changelist = uap->changelist;
> a.nchanges = uap->nchanges;
> a.eventlist = uap->eventlist;
> a.nevents = uap->nevents;
> a.timeout = NULL;
>
> if (uap->timeout) {
> a.timeout = stackgap_alloc(&sg, sizeof(struct timespec));
> error = copyin(uap->timeout, &ts32, sizeof(ts32));
> if (error)
> return (error);
> CP(ts32, ts, tv_sec);
> CP(ts32, ts, tv_nsec);
> error = copyout(&ts, (void *)(uintptr_t)a.timeout, sizeof(ts));
> if (error)
> return (error);
> }
> if (uap->changelist) {
> a.changelist = (struct kevent *)stackgap_alloc(&sg, uap->nchanges * sizeof(struct kevent));
> for (i = 0; i < uap->nchanges; i++) {
> error = copyin(&uap->changelist[i], &ks32, sizeof(ks32));
> if (error)
> return (error);
> ks = (struct kevent *)(uintptr_t)&a.changelist[i];
> CP(ks32, *ks, ident);
> CP(ks32, *ks, filter);
> CP(ks32, *ks, flags);
> CP(ks32, *ks, fflags);
> CP(ks32, *ks, data);
> PTRIN_CP(ks32, *ks, udata);
> }
> }
> if (uap->eventlist) {
> a.eventlist = stackgap_alloc(&sg, uap->nevents * sizeof(struct kevent));
> }
> error = kevent(td, &a);
> if (uap->eventlist && error > 0) {
> for (i = 0; i < error; i++) {
> ks = &a.eventlist[i];
> CP(*ks, ks32, ident);
> CP(*ks, ks32, filter);
> CP(*ks, ks32, flags);
> CP(*ks, ks32, fflags);
> CP(*ks, ks32, data);
> PTROUT_CP(*ks, ks32, udata);
> error = copyout(&ks32, &uap->eventlist[i], sizeof(ks32));
> if (error)
> return (error);
> }
> }
> return error;
> }
>
> int
1289a1371,1399
> #ifdef COMPAT_FREEBSD4
> int
> freebsd4_ia32_sigaction(struct thread *td, struct freebsd4_ia32_sigaction_args *uap)
> {
> struct sigaction32 s32;
> struct sigaction sa, osa, *sap;
> int error;
>
> if (uap->act) {
> error = copyin(uap->act, &s32, sizeof(s32));
> if (error)
> return (error);
> sa.sa_handler = PTRIN(s32.sa_u);
> CP(s32, sa, sa_flags);
> CP(s32, sa, sa_mask);
> sap = &sa;
> } else
> sap = NULL;
> error = kern_sigaction(td, uap->sig, sap, &osa, KSA_FREEBSD4);
> if (error != 0 && uap->oact != NULL) {
> s32.sa_u = PTROUT(osa.sa_handler);
> CP(osa, s32, sa_flags);
> CP(osa, s32, sa_mask);
> error = copyout(&s32, uap->oact, sizeof(s32));
> }
> return (error);
> }
> #endif
>