Lines Matching +full:sr +full:- +full:iov
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
136 FEATURE_ADD("compat_freebsd32", "Compatible with 32-bit FreeBSD"); in register_compat32_feature()
138 "Compatible with 32-bit FreeBSD (legacy feature name)"); in register_compat32_feature()
231 if (uap->rusage != NULL) in freebsd32_wait4()
235 error = kern_wait(td, uap->pid, &status, uap->options, rup); in freebsd32_wait4()
238 if (uap->status != NULL) in freebsd32_wait4()
239 error = copyout(&status, uap->status, sizeof(status)); in freebsd32_wait4()
240 if (uap->rusage != NULL && error == 0) { in freebsd32_wait4()
242 error = copyout(&ru32, uap->rusage, sizeof(ru32)); in freebsd32_wait4()
256 if (uap->wrusage != NULL) in freebsd32_wait6()
260 if (uap->info != NULL) { in freebsd32_wait6()
265 error = kern_wait6(td, uap->idtype, PAIR32TO64(id_t, uap->id), in freebsd32_wait6()
266 &status, uap->options, wrup, sip); in freebsd32_wait6()
269 if (uap->status != NULL) in freebsd32_wait6()
270 error = copyout(&status, uap->status, sizeof(status)); in freebsd32_wait6()
271 if (uap->wrusage != NULL && error == 0) { in freebsd32_wait6()
274 error = copyout(&wru32, uap->wrusage, sizeof(wru32)); in freebsd32_wait6()
276 if (uap->info != NULL && error == 0) { in freebsd32_wait6()
278 error = copyout(&si32, uap->info, sizeof(si32)); in freebsd32_wait6()
291 out->f_iosize = MIN(in->f_iosize, INT32_MAX); in copy_statfs()
295 out->f_files = MIN(in->f_files, INT32_MAX); in copy_statfs()
296 out->f_ffree = MIN(in->f_ffree, INT32_MAX); in copy_statfs()
301 out->f_syncwrites = MIN(in->f_syncwrites, INT32_MAX); in copy_statfs()
302 out->f_asyncwrites = MIN(in->f_asyncwrites, INT32_MAX); in copy_statfs()
303 strlcpy(out->f_fstypename, in copy_statfs()
304 in->f_fstypename, MFSNAMELEN); in copy_statfs()
305 strlcpy(out->f_mntonname, in copy_statfs()
306 in->f_mntonname, min(MNAMELEN, FREEBSD4_OMNAMELEN)); in copy_statfs()
307 out->f_syncreads = MIN(in->f_syncreads, INT32_MAX); in copy_statfs()
308 out->f_asyncreads = MIN(in->f_asyncreads, INT32_MAX); in copy_statfs()
309 strlcpy(out->f_mntfromname, in copy_statfs()
310 in->f_mntfromname, min(MNAMELEN, FREEBSD4_OMNAMELEN)); in copy_statfs()
320 if (uap->bufsize < 0 || uap->bufsize > SIZE_MAX) in freebsd32_getfsstat()
322 error = kern_getfsstat(td, &uap->buf, uap->bufsize, &count, in freebsd32_getfsstat()
323 UIO_USERSPACE, uap->mode); in freebsd32_getfsstat()
325 td->td_retval[0] = count; in freebsd32_getfsstat()
339 count = uap->bufsize / sizeof(struct ostatfs32); in freebsd4_freebsd32_getfsstat()
341 error = kern_getfsstat(td, &buf, size, &count, UIO_SYSSPACE, uap->mode); in freebsd4_freebsd32_getfsstat()
347 error = copyout(&stat32, uap->buf, sizeof(stat32)); in freebsd4_freebsd32_getfsstat()
349 uap->buf++; in freebsd4_freebsd32_getfsstat()
350 copycount--; in freebsd4_freebsd32_getfsstat()
355 td->td_retval[0] = count; in freebsd4_freebsd32_getfsstat()
365 return(kern_freebsd11_getfsstat(td, uap->buf, uap->bufsize, in freebsd11_freebsd32_getfsstat()
366 uap->mode)); in freebsd11_freebsd32_getfsstat()
378 if (uap->ss != NULL) { in freebsd32_sigaltstack()
379 error = copyin(uap->ss, &s32, sizeof(s32)); in freebsd32_sigaltstack()
389 if (error == 0 && uap->oss != NULL) { in freebsd32_sigaltstack()
393 error = copyout(&s32, uap->oss, sizeof(s32)); in freebsd32_sigaltstack()
415 * Allocate demand-paged memory for the file name, argument, and in freebsd32_exec_copyin_args()
480 error = freebsd32_exec_copyin_args(&eargs, uap->fname, UIO_USERSPACE, in freebsd32_execve()
481 uap->argv, uap->envv); in freebsd32_execve()
500 uap->argv, uap->envv); in freebsd32_fexecve()
502 eargs.fd = uap->fd; in freebsd32_fexecve()
514 return (kern_mknodat(td, uap->fd, uap->path, UIO_USERSPACE, in freebsd32_mknodat()
515 uap->mode, PAIR32TO64(dev_t, uap->dev))); in freebsd32_mknodat()
523 prot = uap->prot; in freebsd32_mprotect()
528 return (kern_mprotect(td, (uintptr_t)PTRIN(uap->addr), uap->len, in freebsd32_mprotect()
537 prot = uap->prot; in freebsd32_mmap()
544 .mr_hint = (uintptr_t)uap->addr, in freebsd32_mmap()
545 .mr_len = uap->len, in freebsd32_mmap()
547 .mr_flags = uap->flags, in freebsd32_mmap()
548 .mr_fd = uap->fd, in freebsd32_mmap()
549 .mr_pos = PAIR32TO64(off_t, uap->pos), in freebsd32_mmap()
560 prot = uap->prot; in freebsd6_freebsd32_mmap()
567 .mr_hint = (uintptr_t)uap->addr, in freebsd6_freebsd32_mmap()
568 .mr_len = uap->len, in freebsd6_freebsd32_mmap()
570 .mr_flags = uap->flags, in freebsd6_freebsd32_mmap()
571 .mr_fd = uap->fd, in freebsd6_freebsd32_mmap()
572 .mr_pos = PAIR32TO64(off_t, uap->pos), in freebsd6_freebsd32_mmap()
581 return (kern_ommap(td, (uintptr_t)uap->addr, uap->len, uap->prot, in ofreebsd32_mmap()
582 uap->flags, uap->fd, uap->pos)); in ofreebsd32_mmap()
593 if (uap->itv != NULL) { in freebsd32_setitimer()
594 error = copyin(uap->itv, &i32, sizeof(i32)); in freebsd32_setitimer()
602 error = kern_setitimer(td, uap->which, itvp, &oitv); in freebsd32_setitimer()
603 if (error || uap->oitv == NULL) in freebsd32_setitimer()
607 return (copyout(&i32, uap->oitv, sizeof(i32))); in freebsd32_setitimer()
617 error = kern_getitimer(td, uap->which, &itv); in freebsd32_getitimer()
618 if (error || uap->itv == NULL) in freebsd32_getitimer()
622 return (copyout(&i32, uap->itv, sizeof(i32))); in freebsd32_getitimer()
632 if (uap->tv != NULL) { in freebsd32_select()
633 error = copyin(uap->tv, &tv32, sizeof(tv32)); in freebsd32_select()
644 return (kern_select(td, uap->nd, uap->in, uap->ou, uap->ex, tvp, in freebsd32_select()
657 if (uap->ts != NULL) { in freebsd32_pselect()
658 error = copyin(uap->ts, &ts32, sizeof(ts32)); in freebsd32_pselect()
667 if (uap->sm != NULL) { in freebsd32_pselect()
668 error = copyin(uap->sm, &set, sizeof(set)); in freebsd32_pselect()
677 error = kern_pselect(td, uap->nd, uap->in, uap->ou, uap->ex, tvp, in freebsd32_pselect()
693 ks32->data1 = kevp->data; in freebsd32_kevent_to_kevent32()
694 ks32->data2 = kevp->data >> 32; in freebsd32_kevent_to_kevent32()
696 ks32->data1 = kevp->data >> 32; in freebsd32_kevent_to_kevent32()
697 ks32->data2 = kevp->data; in freebsd32_kevent_to_kevent32()
700 for (j = 0; j < nitems(kevp->ext); j++) { in freebsd32_kevent_to_kevent32()
701 e = kevp->ext[j]; in freebsd32_kevent_to_kevent32()
703 ks32->ext64[2 * j] = e; in freebsd32_kevent_to_kevent32()
704 ks32->ext64[2 * j + 1] = e >> 32; in freebsd32_kevent_to_kevent32()
706 ks32->ext64[2 * j] = e >> 32; in freebsd32_kevent_to_kevent32()
707 ks32->ext64[2 * j + 1] = e; in freebsd32_kevent_to_kevent32()
718 freebsd32_kevent_to_kevent32(&kin->knt_event, &kin32->knt_event); in freebsd32_kinfo_knote_to_32()
721 switch (kin->knt_extdata) { in freebsd32_kinfo_knote_to_32()
727 kin32->knt_vnode.knt_vnode_fsid[0] = kin->knt_vnode. in freebsd32_kinfo_knote_to_32()
729 kin32->knt_vnode.knt_vnode_fsid[1] = kin->knt_vnode. in freebsd32_kinfo_knote_to_32()
731 kin32->knt_vnode.knt_vnode_fileid[0] = kin->knt_vnode. in freebsd32_kinfo_knote_to_32()
733 kin32->knt_vnode.knt_vnode_fileid[1] = kin->knt_vnode. in freebsd32_kinfo_knote_to_32()
736 kin32->knt_vnode.knt_vnode_fsid[1] = kin->knt_vnode. in freebsd32_kinfo_knote_to_32()
738 kin32->knt_vnode.knt_vnode_fsid[0] = kin->knt_vnode. in freebsd32_kinfo_knote_to_32()
740 kin32->knt_vnode.knt_vnode_fileid[1] = kin->knt_vnode. in freebsd32_kinfo_knote_to_32()
742 kin32->knt_vnode.knt_vnode_fileid[0] = kin->knt_vnode. in freebsd32_kinfo_knote_to_32()
745 memcpy(kin32->knt_vnode.knt_vnode_fullpath, in freebsd32_kinfo_knote_to_32()
746 kin->knt_vnode.knt_vnode_fullpath, PATH_MAX); in freebsd32_kinfo_knote_to_32()
750 kin32->knt_pipe.knt_pipe_ino[0] = kin->knt_pipe.knt_pipe_ino; in freebsd32_kinfo_knote_to_32()
751 kin32->knt_pipe.knt_pipe_ino[1] = kin->knt_pipe. in freebsd32_kinfo_knote_to_32()
754 kin32->knt_pipe.knt_pipe_ino[1] = kin->knt_pipe.knt_pipe_ino; in freebsd32_kinfo_knote_to_32()
755 kin32->knt_pipe.knt_pipe_ino[0] = kin->knt_pipe. in freebsd32_kinfo_knote_to_32()
763 * Copy 'count' items into the destination list pointed to by uap->eventlist.
777 error = copyout(ks32, uap->eventlist, count * sizeof *ks32); in freebsd32_kevent_copyout()
779 uap->eventlist += count; in freebsd32_kevent_copyout()
784 * Copy 'count' items from the list pointed to by uap->changelist.
797 error = copyin(uap->changelist, ks32, count * sizeof *ks32); in freebsd32_kevent_copyin()
800 uap->changelist += count; in freebsd32_kevent_copyin()
809 for (j = 0; j < nitems(kevp->ext); j++) { in freebsd32_kevent_copyin()
837 struct kevent32 *eventlist = uap->eventlist; in freebsd32_kevent()
841 if (uap->timeout) { in freebsd32_kevent()
842 error = copyin(uap->timeout, &ts32, sizeof(ts32)); in freebsd32_kevent()
852 ktrstructarray("kevent32", UIO_USERSPACE, uap->changelist, in freebsd32_kevent()
853 uap->nchanges, sizeof(struct kevent32)); in freebsd32_kevent()
855 error = kern_kevent(td, uap->fd, uap->nchanges, uap->nevents, in freebsd32_kevent()
860 td->td_retval[0], sizeof(struct kevent32)); in freebsd32_kevent()
884 error = copyout(ks32, uap->eventlist, count * sizeof *ks32); in freebsd32_kevent11_copyout()
886 uap->eventlist += count; in freebsd32_kevent11_copyout()
891 * Copy 'count' items from the list pointed to by uap->changelist.
903 error = copyin(uap->changelist, ks32, count * sizeof *ks32); in freebsd32_kevent11_copyin()
906 uap->changelist += count; in freebsd32_kevent11_copyin()
915 for (j = 0; j < nitems(kevp->ext); j++) in freebsd32_kevent11_copyin()
934 struct freebsd11_kevent32 *eventlist = uap->eventlist; in freebsd11_freebsd32_kevent()
938 if (uap->timeout) { in freebsd11_freebsd32_kevent()
939 error = copyin(uap->timeout, &ts32, sizeof(ts32)); in freebsd11_freebsd32_kevent()
950 uap->changelist, uap->nchanges, in freebsd11_freebsd32_kevent()
953 error = kern_kevent(td, uap->fd, uap->nchanges, uap->nevents, in freebsd11_freebsd32_kevent()
958 eventlist, td->td_retval[0], in freebsd11_freebsd32_kevent()
974 if (uap->tp) { in freebsd32_gettimeofday()
978 error = copyout(&atv32, uap->tp, sizeof (atv32)); in freebsd32_gettimeofday()
980 if (error == 0 && uap->tzp != NULL) { in freebsd32_gettimeofday()
983 error = copyout(&rtz, uap->tzp, sizeof (rtz)); in freebsd32_gettimeofday()
995 error = kern_getrusage(td, uap->who, &s); in freebsd32_getrusage()
998 error = copyout(&s32, uap->rusage, sizeof(s32)); in freebsd32_getrusage()
1009 pl32->pl_lwpid = pl->pl_lwpid; in ptrace_lwpinfo_to32()
1010 pl32->pl_event = pl->pl_event; in ptrace_lwpinfo_to32()
1011 pl32->pl_flags = pl->pl_flags; in ptrace_lwpinfo_to32()
1012 pl32->pl_sigmask = pl->pl_sigmask; in ptrace_lwpinfo_to32()
1013 pl32->pl_siglist = pl->pl_siglist; in ptrace_lwpinfo_to32()
1014 siginfo_to_siginfo32(&pl->pl_siginfo, &pl32->pl_siginfo); in ptrace_lwpinfo_to32()
1015 strcpy(pl32->pl_tdname, pl->pl_tdname); in ptrace_lwpinfo_to32()
1016 pl32->pl_child_pid = pl->pl_child_pid; in ptrace_lwpinfo_to32()
1017 pl32->pl_syscall_code = pl->pl_syscall_code; in ptrace_lwpinfo_to32()
1018 pl32->pl_syscall_narg = pl->pl_syscall_narg; in ptrace_lwpinfo_to32()
1027 psr32->sr_retval[0] = psr->sr_retval[0]; in ptrace_sc_ret_to32()
1028 psr32->sr_retval[1] = psr->sr_retval[1]; in ptrace_sc_ret_to32()
1029 psr32->sr_error = psr->sr_error; in ptrace_sc_ret_to32()
1040 struct ptrace_sc_remote sr; in freebsd32_ptrace() member
1045 register_t args[nitems(td->td_sa.args)]; in freebsd32_ptrace()
1054 struct ptrace_sc_remote32 sr; in freebsd32_ptrace() member
1055 uint32_t args[nitems(td->td_sa.args)]; in freebsd32_ptrace()
1059 syscallarg_t pscr_args[nitems(td->td_sa.args)]; in freebsd32_ptrace()
1060 u_int pscr_args32[nitems(td->td_sa.args)]; in freebsd32_ptrace()
1068 AUDIT_ARG_PID(uap->pid); in freebsd32_ptrace()
1069 AUDIT_ARG_CMD(uap->req); in freebsd32_ptrace()
1070 AUDIT_ARG_VALUE(uap->data); in freebsd32_ptrace()
1072 data = uap->data; in freebsd32_ptrace()
1073 switch (uap->req) { in freebsd32_ptrace()
1079 if (uap->data > sizeof(r32.pl)) in freebsd32_ptrace()
1087 if (uap->data < offsetof(struct ptrace_lwpinfo32, pl_siginfo) + in freebsd32_ptrace()
1101 error = copyin(uap->addr, &r.reg, sizeof(r.reg)); in freebsd32_ptrace()
1104 error = copyin(uap->addr, &r.fpreg, sizeof(r.fpreg)); in freebsd32_ptrace()
1107 error = copyin(uap->addr, &r.dbreg, sizeof(r.dbreg)); in freebsd32_ptrace()
1111 error = copyin(uap->addr, &r32.vec, sizeof(r32.vec)); in freebsd32_ptrace()
1119 if (uap->data != sizeof(r.ptevents)) in freebsd32_ptrace()
1122 error = copyin(uap->addr, &r.ptevents, uap->data); in freebsd32_ptrace()
1125 error = copyin(uap->addr, &r32.piod, sizeof(r32.piod)); in freebsd32_ptrace()
1134 error = copyin(uap->addr, &r32.pve, sizeof(r32.pve)); in freebsd32_ptrace()
1150 if (uap->data != sizeof(r32.pc)) in freebsd32_ptrace()
1153 error = copyin(uap->addr, &r32.pc, uap->data); in freebsd32_ptrace()
1160 if (uap->data != sizeof(r32.sr)) { in freebsd32_ptrace()
1164 error = copyin(uap->addr, &r32.sr, uap->data); in freebsd32_ptrace()
1167 CP(r32.sr, r.sr, pscr_syscall); in freebsd32_ptrace()
1168 CP(r32.sr, r.sr, pscr_nargs); in freebsd32_ptrace()
1169 if (r.sr.pscr_nargs > nitems(td->td_sa.args)) { in freebsd32_ptrace()
1173 error = copyin(PTRIN(r32.sr.pscr_args), pscr_args32, in freebsd32_ptrace()
1174 sizeof(u_int) * r32.sr.pscr_nargs); in freebsd32_ptrace()
1177 for (i = 0; i < r32.sr.pscr_nargs; i++) in freebsd32_ptrace()
1179 r.sr.pscr_args = pscr_args; in freebsd32_ptrace()
1182 addr = uap->addr; in freebsd32_ptrace()
1188 error = kern_ptrace(td, uap->req, uap->pid, addr, data); in freebsd32_ptrace()
1192 switch (uap->req) { in freebsd32_ptrace()
1203 error = copyout(&r32.pve, uap->addr, sizeof(r32.pve)); in freebsd32_ptrace()
1207 error = copyout(&r32.piod, uap->addr, sizeof(r32.piod)); in freebsd32_ptrace()
1210 error = copyout(&r.reg, uap->addr, sizeof(r.reg)); in freebsd32_ptrace()
1213 error = copyout(&r.fpreg, uap->addr, sizeof(r.fpreg)); in freebsd32_ptrace()
1216 error = copyout(&r.dbreg, uap->addr, sizeof(r.dbreg)); in freebsd32_ptrace()
1220 error = copyout(&r32.vec, uap->addr, sizeof(r32.vec)); in freebsd32_ptrace()
1223 /* NB: The size in uap->data is validated in kern_ptrace(). */ in freebsd32_ptrace()
1224 error = copyout(&r.ptevents, uap->addr, uap->data); in freebsd32_ptrace()
1228 error = copyout(&r32.pl, uap->addr, uap->data); in freebsd32_ptrace()
1233 error = copyout(r32.args, uap->addr, MIN(uap->data, in freebsd32_ptrace()
1238 error = copyout(&r32.psr, uap->addr, MIN(uap->data, in freebsd32_ptrace()
1242 ptrace_sc_ret_to32(&r.sr.pscr_ret, &r32.sr.pscr_ret); in freebsd32_ptrace()
1243 error = copyout(&r32.sr.pscr_ret, uap->addr + in freebsd32_ptrace()
1256 struct iovec *iov; in freebsd32_copyinuio() local
1264 iov = uio->uio_iov; in freebsd32_copyinuio()
1271 iov[i].iov_base = PTRIN(iov32.iov_base); in freebsd32_copyinuio()
1272 iov[i].iov_len = iov32.iov_len; in freebsd32_copyinuio()
1274 uio->uio_iovcnt = iovcnt; in freebsd32_copyinuio()
1275 uio->uio_segflg = UIO_USERSPACE; in freebsd32_copyinuio()
1276 uio->uio_offset = -1; in freebsd32_copyinuio()
1277 uio->uio_resid = 0; in freebsd32_copyinuio()
1279 if (iov->iov_len > INT_MAX - uio->uio_resid) { in freebsd32_copyinuio()
1283 uio->uio_resid += iov->iov_len; in freebsd32_copyinuio()
1284 iov++; in freebsd32_copyinuio()
1296 error = freebsd32_copyinuio(uap->iovp, uap->iovcnt, &auio); in freebsd32_readv()
1299 error = kern_readv(td, uap->fd, auio); in freebsd32_readv()
1310 error = freebsd32_copyinuio(uap->iovp, uap->iovcnt, &auio); in freebsd32_writev()
1313 error = kern_writev(td, uap->fd, auio); in freebsd32_writev()
1324 error = freebsd32_copyinuio(uap->iovp, uap->iovcnt, &auio); in freebsd32_preadv()
1327 error = kern_preadv(td, uap->fd, auio, PAIR32TO64(off_t,uap->offset)); in freebsd32_preadv()
1338 error = freebsd32_copyinuio(uap->iovp, uap->iovcnt, &auio); in freebsd32_pwritev()
1341 error = kern_pwritev(td, uap->fd, auio, PAIR32TO64(off_t,uap->offset)); in freebsd32_pwritev()
1351 struct iovec *iov; in freebsd32_copyiniov() local
1359 iov = malloc(iovlen, M_IOV, M_WAITOK); in freebsd32_copyiniov()
1363 free(iov, M_IOV); in freebsd32_copyiniov()
1366 iov[i].iov_base = PTRIN(iov32.iov_base); in freebsd32_copyiniov()
1367 iov[i].iov_len = iov32.iov_len; in freebsd32_copyiniov()
1369 *iovp = iov; in freebsd32_copyiniov()
1382 msg->msg_name = PTRIN(m32.msg_name); in freebsd32_copyinmsghdr()
1383 msg->msg_namelen = m32.msg_namelen; in freebsd32_copyinmsghdr()
1384 msg->msg_iov = PTRIN(m32.msg_iov); in freebsd32_copyinmsghdr()
1385 msg->msg_iovlen = m32.msg_iovlen; in freebsd32_copyinmsghdr()
1386 msg->msg_control = PTRIN(m32.msg_control); in freebsd32_copyinmsghdr()
1387 msg->msg_controllen = m32.msg_controllen; in freebsd32_copyinmsghdr()
1388 msg->msg_flags = m32.msg_flags; in freebsd32_copyinmsghdr()
1398 m32.msg_name = PTROUT(msg->msg_name); in freebsd32_copyoutmsghdr()
1399 m32.msg_namelen = msg->msg_namelen; in freebsd32_copyoutmsghdr()
1400 m32.msg_iov = PTROUT(msg->msg_iov); in freebsd32_copyoutmsghdr()
1401 m32.msg_iovlen = msg->msg_iovlen; in freebsd32_copyoutmsghdr()
1402 m32.msg_control = PTROUT(msg->msg_control); in freebsd32_copyoutmsghdr()
1403 m32.msg_controllen = msg->msg_controllen; in freebsd32_copyoutmsghdr()
1404 m32.msg_flags = msg->msg_flags; in freebsd32_copyoutmsghdr()
1409 #define FREEBSD32_ALIGNBYTES (sizeof(int) - 1)
1436 switch (cm->cmsg_level) { in freebsd32_cmsg_convert()
1438 switch (cm->cmsg_type) { in freebsd32_cmsg_convert()
1484 len = msg->msg_controllen; in freebsd32_copy_msg_out()
1485 msg->msg_controllen = 0; in freebsd32_copy_msg_out()
1487 ctlbuf = msg->msg_control; in freebsd32_copy_msg_out()
1488 for (m = control; m != NULL && len > 0; m = m->m_next) { in freebsd32_copy_msg_out()
1490 clen = m->m_len; in freebsd32_copy_msg_out()
1493 cm->cmsg_len > clen) { in freebsd32_copy_msg_out()
1499 datalen = (caddr_t)cm + cm->cmsg_len - (caddr_t)data; in freebsd32_copy_msg_out()
1509 msg->msg_flags |= MSG_CTRUNC; in freebsd32_copy_msg_out()
1513 oldclen = cm->cmsg_len; in freebsd32_copy_msg_out()
1514 cm->cmsg_len = FREEBSD32_ALIGN(sizeof(struct cmsghdr)) + in freebsd32_copy_msg_out()
1517 cm->cmsg_len = oldclen; in freebsd32_copy_msg_out()
1522 len -= FREEBSD32_ALIGN(copylen); in freebsd32_copy_msg_out()
1526 msg->msg_flags |= MSG_CTRUNC; in freebsd32_copy_msg_out()
1537 len -= FREEBSD32_ALIGN(copylen); in freebsd32_copy_msg_out()
1540 clen -= CMSG_SPACE(datalen); in freebsd32_copy_msg_out()
1548 msg->msg_controllen += in freebsd32_copy_msg_out()
1553 msg->msg_flags |= MSG_CTRUNC; in freebsd32_copy_msg_out()
1565 struct iovec *uiov, *iov; in freebsd32_recvmsg() local
1570 error = freebsd32_copyinmsghdr(uap->msg, &msg); in freebsd32_recvmsg()
1573 error = freebsd32_copyiniov((void *)msg.msg_iov, msg.msg_iovlen, &iov, in freebsd32_recvmsg()
1577 msg.msg_flags = uap->flags; in freebsd32_recvmsg()
1579 msg.msg_iov = iov; in freebsd32_recvmsg()
1582 error = kern_recvit(td, uap->s, &msg, UIO_USERSPACE, controlp); in freebsd32_recvmsg()
1592 error = freebsd32_copyoutmsghdr(&msg, uap->msg); in freebsd32_recvmsg()
1594 free(iov, M_IOV); in freebsd32_recvmsg()
1614 * Copy-in the array of control messages constructed using alignment
1615 * and padding suitable for a 32-bit environment and construct an
1616 * mbuf using alignment and padding suitable for a 64-bit kernel.
1640 * required for 64 bit-aligned copies of the control messages. in freebsd32_copyin_control()
1650 if (cm->cmsg_len < FREEBSD32_ALIGN(sizeof(*cm)) || in freebsd32_copyin_control()
1651 cm->cmsg_len > buflen) { in freebsd32_copyin_control()
1655 msglen = FREEBSD32_ALIGN(cm->cmsg_len); in freebsd32_copyin_control()
1656 if (msglen < cm->cmsg_len) { in freebsd32_copyin_control()
1663 buflen -= msglen; in freebsd32_copyin_control()
1667 CMSG_ALIGN(msglen - FREEBSD32_ALIGN(sizeof(*cm))); in freebsd32_copyin_control()
1673 * Allocate up to MJUMPAGESIZE space for the re-aligned and in freebsd32_copyin_control()
1674 * re-padded control messages. This allows a full MCLBYTES of in freebsd32_copyin_control()
1675 * 32-bit sized and aligned messages to fit and avoids an ABI in freebsd32_copyin_control()
1683 m->m_len = outlen; in freebsd32_copyin_control()
1695 msglen = cm->cmsg_len - FREEBSD32_ALIGN(sizeof(*cm)); in freebsd32_copyin_control()
1696 cm->cmsg_len = CMSG_ALIGN(sizeof(*cm)) + msglen; in freebsd32_copyin_control()
1706 outlen -= CMSG_ALIGN(sizeof(*cm)) + CMSG_ALIGN(msglen); in freebsd32_copyin_control()
1719 struct iovec *iov; in freebsd32_sendmsg() local
1724 error = freebsd32_copyinmsghdr(uap->msg, &msg); in freebsd32_sendmsg()
1727 error = freebsd32_copyiniov((void *)msg.msg_iov, msg.msg_iovlen, &iov, in freebsd32_sendmsg()
1731 msg.msg_iov = iov; in freebsd32_sendmsg()
1756 error = kern_sendit(td, uap->s, &msg, uap->flags, control, in freebsd32_sendmsg()
1760 free(iov, M_IOV); in freebsd32_sendmsg()
1784 if (uap->tv) { in freebsd32_settimeofday()
1785 error = copyin(uap->tv, &tv32, sizeof(tv32)); in freebsd32_settimeofday()
1793 if (uap->tzp) { in freebsd32_settimeofday()
1794 error = copyin(uap->tzp, &tz, sizeof(tz)); in freebsd32_settimeofday()
1810 if (uap->tptr != NULL) { in freebsd32_utimes()
1811 error = copyin(uap->tptr, s32, sizeof(s32)); in freebsd32_utimes()
1821 return (kern_utimesat(td, AT_FDCWD, uap->path, UIO_USERSPACE, in freebsd32_utimes()
1832 if (uap->tptr != NULL) { in freebsd32_lutimes()
1833 error = copyin(uap->tptr, s32, sizeof(s32)); in freebsd32_lutimes()
1843 return (kern_lutimes(td, uap->path, UIO_USERSPACE, sp, UIO_SYSSPACE)); in freebsd32_lutimes()
1853 if (uap->tptr != NULL) { in freebsd32_futimes()
1854 error = copyin(uap->tptr, s32, sizeof(s32)); in freebsd32_futimes()
1864 return (kern_futimes(td, uap->fd, sp, UIO_SYSSPACE)); in freebsd32_futimes()
1874 if (uap->times != NULL) { in freebsd32_futimesat()
1875 error = copyin(uap->times, s32, sizeof(s32)); in freebsd32_futimesat()
1885 return (kern_utimesat(td, uap->fd, uap->path, UIO_USERSPACE, in freebsd32_futimesat()
1896 if (uap->times != NULL) { in freebsd32_futimens()
1897 error = copyin(uap->times, ts32, sizeof(ts32)); in freebsd32_futimens()
1907 return (kern_futimens(td, uap->fd, tsp, UIO_SYSSPACE)); in freebsd32_futimens()
1917 if (uap->times != NULL) { in freebsd32_utimensat()
1918 error = copyin(uap->times, ts32, sizeof(ts32)); in freebsd32_utimensat()
1928 return (kern_utimensat(td, uap->fd, uap->path, UIO_USERSPACE, in freebsd32_utimensat()
1929 tsp, UIO_SYSSPACE, uap->flag)); in freebsd32_utimensat()
1939 if (uap->delta) { in freebsd32_adjtime()
1940 error = copyin(uap->delta, &tv32, sizeof(tv32)); in freebsd32_adjtime()
1949 if (uap->olddelta && error == 0) { in freebsd32_adjtime()
1952 error = copyout(&tv32, uap->olddelta, sizeof(tv32)); in freebsd32_adjtime()
1966 error = kern_statfs(td, uap->path, UIO_USERSPACE, sp); in freebsd4_freebsd32_statfs()
1969 error = copyout(&s32, uap->buf, sizeof(s32)); in freebsd4_freebsd32_statfs()
1985 error = kern_fstatfs(td, uap->fd, sp); in freebsd4_freebsd32_fstatfs()
1988 error = copyout(&s32, uap->buf, sizeof(s32)); in freebsd4_freebsd32_fstatfs()
2004 if ((error = copyin(uap->u_fhp, &fh, sizeof(fhandle_t))) != 0) in freebsd4_freebsd32_fhstatfs()
2010 error = copyout(&s32, uap->buf, sizeof(s32)); in freebsd4_freebsd32_fhstatfs()
2021 return (kern_pread(td, uap->fd, uap->buf, uap->nbyte, in freebsd32_pread()
2022 PAIR32TO64(off_t, uap->offset))); in freebsd32_pread()
2029 return (kern_pwrite(td, uap->fd, uap->buf, uap->nbyte, in freebsd32_pwrite()
2030 PAIR32TO64(off_t, uap->offset))); in freebsd32_pwrite()
2038 return (kern_lseek(td, uap->fd, uap->offset, uap->whence)); in ofreebsd32_lseek()
2048 error = kern_lseek(td, uap->fd, PAIR32TO64(off_t, uap->offset), in freebsd32_lseek()
2049 uap->whence); in freebsd32_lseek()
2051 pos = td->td_uretoff.tdu_off; in freebsd32_lseek()
2052 td->td_retval[RETVAL_LO] = pos & 0xffffffff; /* %eax */ in freebsd32_lseek()
2053 td->td_retval[RETVAL_HI] = pos >> 32; /* %edx */ in freebsd32_lseek()
2061 return (kern_truncate(td, uap->path, UIO_USERSPACE, in freebsd32_truncate()
2062 PAIR32TO64(off_t, uap->length))); in freebsd32_truncate()
2069 return (kern_truncate(td, uap->path, UIO_USERSPACE, uap->length)); in ofreebsd32_truncate()
2077 return (kern_ftruncate(td, uap->fd, PAIR32TO64(off_t, uap->length))); in freebsd32_ftruncate()
2084 return (kern_ftruncate(td, uap->fd, uap->length)); in ofreebsd32_ftruncate()
2096 ap.fd = uap->fd; in ofreebsd32_getdirentries()
2097 ap.buf = uap->buf; in ofreebsd32_getdirentries()
2098 ap.count = uap->count; in ofreebsd32_getdirentries()
2103 error = copyout(&loff_cut, uap->basep, sizeof(int32_t)); in ofreebsd32_getdirentries()
2118 error = freebsd11_kern_getdirentries(td, uap->fd, uap->buf, uap->count, in freebsd11_freebsd32_getdirentries()
2122 if (uap->basep != NULL) { in freebsd11_freebsd32_getdirentries()
2124 error = copyout(&base32, uap->basep, sizeof(int32_t)); in freebsd11_freebsd32_getdirentries()
2136 return (kern_pread(td, uap->fd, uap->buf, uap->nbyte, in freebsd6_freebsd32_pread()
2137 PAIR32TO64(off_t, uap->offset))); in freebsd6_freebsd32_pread()
2144 return (kern_pwrite(td, uap->fd, uap->buf, uap->nbyte, in freebsd6_freebsd32_pwrite()
2145 PAIR32TO64(off_t, uap->offset))); in freebsd6_freebsd32_pwrite()
2154 error = kern_lseek(td, uap->fd, PAIR32TO64(off_t, uap->offset), in freebsd6_freebsd32_lseek()
2155 uap->whence); in freebsd6_freebsd32_lseek()
2157 pos = *(off_t *)(td->td_retval); in freebsd6_freebsd32_lseek()
2158 td->td_retval[RETVAL_LO] = pos & 0xffffffff; /* %eax */ in freebsd6_freebsd32_lseek()
2159 td->td_retval[RETVAL_HI] = pos >> 32; /* %edx */ in freebsd6_freebsd32_lseek()
2167 return (kern_truncate(td, uap->path, UIO_USERSPACE, in freebsd6_freebsd32_truncate()
2168 PAIR32TO64(off_t, uap->length))); in freebsd6_freebsd32_truncate()
2175 return (kern_ftruncate(td, uap->fd, PAIR32TO64(off_t, uap->length))); in freebsd6_freebsd32_ftruncate()
2199 offset = PAIR32TO64(off_t, uap->offset); in freebsd32_do_sendfile()
2205 if (uap->hdtr != NULL) { in freebsd32_do_sendfile()
2206 error = copyin(uap->hdtr, &hdtr32, sizeof(hdtr32)); in freebsd32_do_sendfile()
2227 if (uap->nbytes > hdr_uio->uio_resid) in freebsd32_do_sendfile()
2228 uap->nbytes -= hdr_uio->uio_resid; in freebsd32_do_sendfile()
2230 uap->nbytes = 0; in freebsd32_do_sendfile()
2243 AUDIT_ARG_FD(uap->fd); in freebsd32_do_sendfile()
2245 if ((error = fget_read(td, uap->fd, in freebsd32_do_sendfile()
2249 error = fo_sendfile(fp, uap->s, hdr_uio, trl_uio, offset, in freebsd32_do_sendfile()
2250 uap->nbytes, &sbytes, uap->flags, td); in freebsd32_do_sendfile()
2253 if (uap->sbytes != NULL) in freebsd32_do_sendfile()
2254 (void)copyout(&sbytes, uap->sbytes, sizeof(off_t)); in freebsd32_do_sendfile()
2287 * 32-bit architectures other than i386 have 64-bit time_t. This in copy_stat()
2291 bzero(&out->st_atim, sizeof(out->st_atim)); in copy_stat()
2292 bzero(&out->st_mtim, sizeof(out->st_mtim)); in copy_stat()
2293 bzero(&out->st_ctim, sizeof(out->st_ctim)); in copy_stat()
2294 bzero(&out->st_birthtim, sizeof(out->st_birthtim)); in copy_stat()
2313 out->st_padding0 = 0; in copy_stat()
2314 out->st_padding1 = 0; in copy_stat()
2316 out->st_atim_ext = 0; in copy_stat()
2317 out->st_mtim_ext = 0; in copy_stat()
2318 out->st_ctim_ext = 0; in copy_stat()
2319 out->st_btim_ext = 0; in copy_stat()
2321 bzero(out->st_spare, sizeof(out->st_spare)); in copy_stat()
2337 out->st_size = MIN(in->st_size, INT32_MAX); in copy_ostat()
2356 error = kern_statat(td, 0, AT_FDCWD, uap->path, UIO_USERSPACE, &sb); in ofreebsd32_stat()
2360 error = copyout(&sb32, uap->ub, sizeof (sb32)); in ofreebsd32_stat()
2372 error = kern_fstat(td, uap->fd, &ub); in freebsd32_fstat()
2376 error = copyout(&ub32, uap->sb, sizeof(ub32)); in freebsd32_fstat()
2388 error = kern_fstat(td, uap->fd, &ub); in ofreebsd32_fstat()
2392 error = copyout(&ub32, uap->sb, sizeof(ub32)); in ofreebsd32_fstat()
2404 error = kern_statat(td, uap->flag, uap->fd, uap->path, UIO_USERSPACE, in freebsd32_fstatat()
2409 error = copyout(&ub32, uap->buf, sizeof(ub32)); in freebsd32_fstatat()
2421 error = kern_statat(td, AT_SYMLINK_NOFOLLOW, AT_FDCWD, uap->path, in ofreebsd32_lstat()
2426 error = copyout(&sb32, uap->ub, sizeof (sb32)); in ofreebsd32_lstat()
2439 error = copyin(uap->u_fhp, &fh, sizeof(fhandle_t)); in freebsd32_fhstat()
2446 error = copyout(&sb32, uap->sb, sizeof (sb32)); in freebsd32_fhstat()
2459 * 32-bit architectures other than i386 have 64-bit time_t. This in freebsd11_cvtstat32()
2463 bzero(&out->st_atim, sizeof(out->st_atim)); in freebsd11_cvtstat32()
2464 bzero(&out->st_mtim, sizeof(out->st_mtim)); in freebsd11_cvtstat32()
2465 bzero(&out->st_ctim, sizeof(out->st_ctim)); in freebsd11_cvtstat32()
2466 bzero(&out->st_birthtim, sizeof(out->st_birthtim)); in freebsd11_cvtstat32()
2470 if (in->st_ino != out->st_ino) { in freebsd11_cvtstat32()
2478 out->st_ino = UINT32_MAX; in freebsd11_cvtstat32()
2483 if (in->st_nlink != out->st_nlink) { in freebsd11_cvtstat32()
2491 out->st_nlink = UINT16_MAX; in freebsd11_cvtstat32()
2495 out->st_dev = in->st_dev; in freebsd11_cvtstat32()
2496 if (out->st_dev != in->st_dev) { in freebsd11_cvtstat32()
2507 out->st_rdev = in->st_rdev; in freebsd11_cvtstat32()
2508 if (out->st_rdev != in->st_rdev) { in freebsd11_cvtstat32()
2525 out->st_lspare = 0; in freebsd11_cvtstat32()
2526 bzero((char *)&out->st_birthtim + sizeof(out->st_birthtim), in freebsd11_cvtstat32()
2527 sizeof(*out) - offsetof(struct freebsd11_stat32, in freebsd11_cvtstat32()
2528 st_birthtim) - sizeof(out->st_birthtim)); in freebsd11_cvtstat32()
2540 error = kern_statat(td, 0, AT_FDCWD, uap->path, UIO_USERSPACE, &sb); in freebsd11_freebsd32_stat()
2545 error = copyout(&sb32, uap->ub, sizeof (sb32)); in freebsd11_freebsd32_stat()
2557 error = kern_fstat(td, uap->fd, &sb); in freebsd11_freebsd32_fstat()
2562 error = copyout(&sb32, uap->sb, sizeof (sb32)); in freebsd11_freebsd32_fstat()
2574 error = kern_statat(td, uap->flag, uap->fd, uap->path, UIO_USERSPACE, in freebsd11_freebsd32_fstatat()
2580 error = copyout(&sb32, uap->buf, sizeof (sb32)); in freebsd11_freebsd32_fstatat()
2592 error = kern_statat(td, AT_SYMLINK_NOFOLLOW, AT_FDCWD, uap->path, in freebsd11_freebsd32_lstat()
2598 error = copyout(&sb32, uap->ub, sizeof (sb32)); in freebsd11_freebsd32_lstat()
2611 error = copyin(uap->u_fhp, &fh, sizeof(fhandle_t)); in freebsd11_freebsd32_fhstat()
2619 error = copyout(&sb32, uap->sb, sizeof (sb32)); in freebsd11_freebsd32_fhstat()
2665 error = kern_statat(td, 0, AT_FDCWD, uap->path, UIO_USERSPACE, &sb); in freebsd11_freebsd32_nstat()
2670 error = copyout(&nsb, uap->ub, sizeof (nsb)); in freebsd11_freebsd32_nstat()
2682 error = kern_statat(td, AT_SYMLINK_NOFOLLOW, AT_FDCWD, uap->path, in freebsd11_freebsd32_nlstat()
2688 error = copyout(&nsb, uap->ub, sizeof (nsb)); in freebsd11_freebsd32_nlstat()
2700 error = kern_fstat(td, uap->fd, &ub); in freebsd11_freebsd32_nfstat()
2705 error = copyout(&nub, uap->sb, sizeof(nub)); in freebsd11_freebsd32_nfstat()
2717 if (uap->namelen > CTL_MAXNAME || uap->namelen < 2) in freebsd32___sysctl()
2719 error = copyin(uap->name, name, uap->namelen * sizeof(int)); in freebsd32___sysctl()
2722 if (uap->oldlenp) { in freebsd32___sysctl()
2723 error = fueword32(uap->oldlenp, &tmp); in freebsd32___sysctl()
2730 error = userland_sysctl(td, name, uap->namelen, in freebsd32___sysctl()
2731 uap->old, &oldlen, 1, in freebsd32___sysctl()
2732 uap->new, uap->newlen, &j, SCTL_MASK32); in freebsd32___sysctl()
2735 if (uap->oldlenp != NULL && suword32(uap->oldlenp, j) != 0) in freebsd32___sysctl()
2748 if (uap->oldlenp != NULL) { in freebsd32___sysctlbyname()
2749 error = fueword32(uap->oldlenp, &tmp); in freebsd32___sysctlbyname()
2756 error = kern___sysctlbyname(td, uap->name, uap->namelen, uap->old, in freebsd32___sysctlbyname()
2757 &oldlen, uap->new, uap->newlen, &rv, SCTL_MASK32, 1); in freebsd32___sysctlbyname()
2760 if (uap->oldlenp != NULL && suword32(uap->oldlenp, rv) != 0) in freebsd32___sysctlbyname()
2772 error = copyin(uap->jail, &version, sizeof(uint32_t)); in freebsd32_jail()
2783 error = copyin(uap->jail, &j32_v0, sizeof(struct jail32_v0)); in freebsd32_jail()
2795 * Version 1 was used by multi-IPv4 jail implementations in freebsd32_jail()
2802 /* FreeBSD multi-IPv4/IPv6,noIP jails. */ in freebsd32_jail()
2805 error = copyin(uap->jail, &j32, sizeof(struct jail32)); in freebsd32_jail()
2820 /* Sci-Fi jails are not supported, sorry. */ in freebsd32_jail()
2833 if (uap->iovcnt & 1) in freebsd32_jail_set()
2836 error = freebsd32_copyinuio(uap->iovp, uap->iovcnt, &auio); in freebsd32_jail_set()
2839 error = kern_jail_set(td, auio, uap->flags); in freebsd32_jail_set()
2852 if (uap->iovcnt & 1) in freebsd32_jail_get()
2855 error = freebsd32_copyinuio(uap->iovp, uap->iovcnt, &auio); in freebsd32_jail_get()
2858 error = kern_jail_get(td, auio, uap->flags); in freebsd32_jail_get()
2860 for (i = 0; i < uap->iovcnt; i++) { in freebsd32_jail_get()
2861 PTROUT_CP(auio->uio_iov[i], iov32, iov_base); in freebsd32_jail_get()
2862 CP(auio->uio_iov[i], iov32, iov_len); in freebsd32_jail_get()
2863 error = copyout(&iov32, uap->iovp + i, sizeof(iov32)); in freebsd32_jail_get()
2878 if (uap->act) { in freebsd32_sigaction()
2879 error = copyin(uap->act, &s32, sizeof(s32)); in freebsd32_sigaction()
2888 error = kern_sigaction(td, uap->sig, sap, &osa, 0); in freebsd32_sigaction()
2889 if (error == 0 && uap->oact != NULL) { in freebsd32_sigaction()
2893 error = copyout(&s32, uap->oact, sizeof(s32)); in freebsd32_sigaction()
2907 if (uap->act) { in freebsd4_freebsd32_sigaction()
2908 error = copyin(uap->act, &s32, sizeof(s32)); in freebsd4_freebsd32_sigaction()
2917 error = kern_sigaction(td, uap->sig, sap, &osa, KSA_FREEBSD4); in freebsd4_freebsd32_sigaction()
2918 if (error == 0 && uap->oact != NULL) { in freebsd4_freebsd32_sigaction()
2922 error = copyout(&s32, uap->oact, sizeof(s32)); in freebsd4_freebsd32_sigaction()
2945 if (uap->signum <= 0 || uap->signum >= ONSIG) in ofreebsd32_sigaction()
2948 if (uap->nsa) { in ofreebsd32_sigaction()
2949 error = copyin(uap->nsa, &s32, sizeof(s32)); in ofreebsd32_sigaction()
2958 error = kern_sigaction(td, uap->signum, sap, &osa, KSA_OSIGSET); in ofreebsd32_sigaction()
2959 if (error == 0 && uap->osa != NULL) { in ofreebsd32_sigaction()
2963 error = copyout(&s32, uap->osa, sizeof(s32)); in ofreebsd32_sigaction()
2982 if (uap->signum <= 0 || uap->signum >= ONSIG) in ofreebsd32_sigvec()
2985 if (uap->nsv) { in ofreebsd32_sigvec()
2986 error = copyin(uap->nsv, &vec, sizeof(vec)); in ofreebsd32_sigvec()
2996 error = kern_sigaction(td, uap->signum, sap, &osa, KSA_OSIGSET); in ofreebsd32_sigvec()
2997 if (error == 0 && uap->osv != NULL) { in ofreebsd32_sigvec()
3003 error = copyout(&vec, uap->osv, sizeof(vec)); in ofreebsd32_sigvec()
3021 if (uap->nss != NULL) { in ofreebsd32_sigstack()
3022 error = copyin(uap->nss, &s32, sizeof(s32)); in ofreebsd32_sigstack()
3031 oss.ss_sp = td->td_sigstk.ss_sp; in ofreebsd32_sigstack()
3034 td->td_sigstk.ss_sp = nss.ss_sp; in ofreebsd32_sigstack()
3035 td->td_sigstk.ss_size = 0; in ofreebsd32_sigstack()
3036 td->td_sigstk.ss_flags |= (nss.ss_onstack & SS_ONSTACK); in ofreebsd32_sigstack()
3037 td->td_pflags |= TDP_ALTSTACK; in ofreebsd32_sigstack()
3039 if (uap->oss != NULL) { in ofreebsd32_sigstack()
3042 error = copyout(&s32, uap->oss, sizeof(s32)); in ofreebsd32_sigstack()
3053 TIMER_RELTIME, uap->rqtp, uap->rmtp)); in freebsd32_nanosleep()
3062 error = freebsd32_user_clock_nanosleep(td, uap->clock_id, uap->flags, in freebsd32_clock_nanosleep()
3063 uap->rqtp, uap->rmtp); in freebsd32_clock_nanosleep()
3102 error = kern_clock_gettime(td, uap->clock_id, &ats); in freebsd32_clock_gettime()
3106 error = copyout(&ats32, uap->tp, sizeof(ats32)); in freebsd32_clock_gettime()
3119 error = copyin(uap->tp, &ats32, sizeof(ats32)); in freebsd32_clock_settime()
3125 return (kern_clock_settime(td, uap->clock_id, &ats)); in freebsd32_clock_settime()
3136 if (uap->tp == NULL) in freebsd32_clock_getres()
3138 error = kern_clock_getres(td, uap->clock_id, &ts); in freebsd32_clock_getres()
3142 error = copyout(&ts32, uap->tp, sizeof(ts32)); in freebsd32_clock_getres()
3154 if (uap->evp == NULL) { in freebsd32_ktimer_create()
3158 error = copyin(uap->evp, &ev32, sizeof(ev32)); in freebsd32_ktimer_create()
3165 error = kern_ktimer_create(td, uap->clock_id, evp, &id, -1); in freebsd32_ktimer_create()
3167 error = copyout(&id, uap->timerid, sizeof(int)); in freebsd32_ktimer_create()
3182 error = copyin(uap->value, &val32, sizeof(val32)); in freebsd32_ktimer_settime()
3186 ovalp = uap->ovalue != NULL ? &oval : NULL; in freebsd32_ktimer_settime()
3187 error = kern_ktimer_settime(td, uap->timerid, uap->flags, &val, ovalp); in freebsd32_ktimer_settime()
3188 if (error == 0 && uap->ovalue != NULL) { in freebsd32_ktimer_settime()
3190 error = copyout(&oval32, uap->ovalue, sizeof(oval32)); in freebsd32_ktimer_settime()
3203 error = kern_ktimer_gettime(td, uap->timerid, &val); in freebsd32_ktimer_gettime()
3206 error = copyout(&val32, uap->value, sizeof(val32)); in freebsd32_ktimer_gettime()
3219 error = kern_timerfd_gettime(td, uap->fd, &curr_value); in freebsd32_timerfd_gettime()
3225 error = copyout(&curr_value32, uap->curr_value, in freebsd32_timerfd_gettime()
3240 error = copyin(uap->new_value, &new_value32, sizeof(new_value32)); in freebsd32_timerfd_settime()
3247 if (uap->old_value == NULL) { in freebsd32_timerfd_settime()
3248 error = kern_timerfd_settime(td, uap->fd, uap->flags, in freebsd32_timerfd_settime()
3251 error = kern_timerfd_settime(td, uap->fd, uap->flags, in freebsd32_timerfd_settime()
3258 error = copyout(&old_value32, uap->old_value, in freebsd32_timerfd_settime()
3272 error = kern_clock_getcpuclockid2(td, PAIR32TO64(id_t, uap->id), in freebsd32_clock_getcpuclockid2()
3273 uap->which, &clk_id); in freebsd32_clock_getcpuclockid2()
3275 error = copyout(&clk_id, uap->clock_id, sizeof(clockid_t)); in freebsd32_clock_getcpuclockid2()
3287 if (uap->param_size < 0 || in freebsd32_thr_new()
3288 uap->param_size > sizeof(struct thr_param32)) in freebsd32_thr_new()
3292 error = copyin(uap->param, ¶m32, uap->param_size); in freebsd32_thr_new()
3321 if (uap->timeout != NULL) { in freebsd32_thr_suspend()
3322 error = copyin((const void *)uap->timeout, (void *)&ts32, in freebsd32_thr_suspend()
3337 dst->si_signo = src->si_signo; in siginfo_to_siginfo32()
3338 dst->si_errno = src->si_errno; in siginfo_to_siginfo32()
3339 dst->si_code = src->si_code; in siginfo_to_siginfo32()
3340 dst->si_pid = src->si_pid; in siginfo_to_siginfo32()
3341 dst->si_uid = src->si_uid; in siginfo_to_siginfo32()
3342 dst->si_status = src->si_status; in siginfo_to_siginfo32()
3343 dst->si_addr = (uintptr_t)src->si_addr; in siginfo_to_siginfo32()
3344 dst->si_value.sival_int = src->si_value.sival_int; in siginfo_to_siginfo32()
3345 dst->si_timerid = src->si_timerid; in siginfo_to_siginfo32()
3346 dst->si_overrun = src->si_overrun; in siginfo_to_siginfo32()
3362 * On 32-bit ABIs, sival_int and sival_ptr are the same. in freebsd32_sigqueue()
3363 * On 64-bit little-endian ABIs, the low bits are the same. in freebsd32_sigqueue()
3364 * In 64-bit big-endian ABIs, sival_int overlaps with in freebsd32_sigqueue()
3370 sv.sival_int = (uint32_t)(uint64_t)uap->value; in freebsd32_sigqueue()
3372 return (kern_sigqueue(td, uap->pid, uap->signum, &sv)); in freebsd32_sigqueue()
3386 if (uap->timeout) { in freebsd32_sigtimedwait()
3387 error = copyin(uap->timeout, &ts32, sizeof(ts32)); in freebsd32_sigtimedwait()
3396 error = copyin(uap->set, &set, sizeof(set)); in freebsd32_sigtimedwait()
3404 if (uap->info) { in freebsd32_sigtimedwait()
3406 error = copyout(&si32, uap->info, sizeof(struct __siginfo32)); in freebsd32_sigtimedwait()
3410 td->td_retval[0] = ksi.ksi_signo; in freebsd32_sigtimedwait()
3425 error = copyin(uap->set, &set, sizeof(set)); in freebsd32_sigwaitinfo()
3433 if (uap->info) { in freebsd32_sigwaitinfo()
3435 error = copyout(&si32, uap->info, sizeof(struct __siginfo32)); in freebsd32_sigwaitinfo()
3438 td->td_retval[0] = ksi.ksi_signo; in freebsd32_sigwaitinfo()
3447 return (kern_cpuset_setid(td, uap->which, in freebsd32_cpuset_setid()
3448 PAIR32TO64(id_t, uap->id), uap->setid)); in freebsd32_cpuset_setid()
3456 return (kern_cpuset_getid(td, uap->level, uap->which, in freebsd32_cpuset_getid()
3457 PAIR32TO64(id_t, uap->id), uap->setid)); in freebsd32_cpuset_getid()
3472 p = (int *)kb->__bits; in copyin32_set()
3493 const int *kp = (const int *)kb->__bits; in copyout32_set()
3494 int *up = (int *)ub->__bits; in copyout32_set()
3523 return (user_cpuset_getaffinity(td, uap->level, uap->which, in freebsd32_cpuset_getaffinity()
3524 PAIR32TO64(id_t,uap->id), uap->cpusetsize, uap->mask, in freebsd32_cpuset_getaffinity()
3533 return (user_cpuset_setaffinity(td, uap->level, uap->which, in freebsd32_cpuset_setaffinity()
3534 PAIR32TO64(id_t,uap->id), uap->cpusetsize, uap->mask, in freebsd32_cpuset_setaffinity()
3543 return (kern_cpuset_getdomain(td, uap->level, uap->which, in freebsd32_cpuset_getdomain()
3544 PAIR32TO64(id_t,uap->id), uap->domainsetsize, uap->mask, uap->policy, in freebsd32_cpuset_getdomain()
3553 return (kern_cpuset_setdomain(td, uap->level, uap->which, in freebsd32_cpuset_setdomain()
3554 PAIR32TO64(id_t,uap->id), uap->domainsetsize, uap->mask, uap->policy, in freebsd32_cpuset_setdomain()
3571 * Mount flags are now 64-bits. On 32-bit archtectures only in freebsd32_nmount()
3572 * 32-bits are passed in, but from here on everything handles in freebsd32_nmount()
3573 * 64-bit flags correctly. in freebsd32_nmount()
3575 flags = uap->flags; in freebsd32_nmount()
3592 if ((uap->iovcnt & 1) || (uap->iovcnt < 4)) in freebsd32_nmount()
3595 error = freebsd32_copyinuio(uap->iovp, uap->iovcnt, &auio); in freebsd32_nmount()
3613 if (uap->zzz) {
3614 error = copyin(uap->zzz, &s32, sizeof(s32));
3623 if (uap->zzz) {
3666 sysent = imgp->sysent; in freebsd32_copyout_strings()
3668 arginfo = (struct freebsd32_ps_strings *)PROC_PS_STRINGS(imgp->proc); in freebsd32_copyout_strings()
3669 imgp->ps_strings = arginfo; in freebsd32_copyout_strings()
3675 if (!PROC_HAS_SHP(imgp->proc)) { in freebsd32_copyout_strings()
3676 szsigcode = *sysent->sv_szsigcode; in freebsd32_copyout_strings()
3677 destp -= szsigcode; in freebsd32_copyout_strings()
3679 error = copyout(sysent->sv_sigcode, (void *)destp, in freebsd32_copyout_strings()
3688 if (imgp->execpath != NULL && imgp->auxargs != NULL) { in freebsd32_copyout_strings()
3689 execpath_len = strlen(imgp->execpath) + 1; in freebsd32_copyout_strings()
3690 destp -= execpath_len; in freebsd32_copyout_strings()
3691 imgp->execpathp = (void *)destp; in freebsd32_copyout_strings()
3692 error = copyout(imgp->execpath, imgp->execpathp, execpath_len); in freebsd32_copyout_strings()
3701 destp -= sizeof(canary); in freebsd32_copyout_strings()
3702 imgp->canary = (void *)destp; in freebsd32_copyout_strings()
3703 error = copyout(canary, imgp->canary, sizeof(canary)); in freebsd32_copyout_strings()
3706 imgp->canarylen = sizeof(canary); in freebsd32_copyout_strings()
3713 destp -= sizeof(pagesizes32); in freebsd32_copyout_strings()
3715 imgp->pagesizes = (void *)destp; in freebsd32_copyout_strings()
3716 error = copyout(pagesizes32, imgp->pagesizes, sizeof(pagesizes32)); in freebsd32_copyout_strings()
3719 imgp->pagesizeslen = sizeof(pagesizes32); in freebsd32_copyout_strings()
3724 destp -= ARG_MAX - imgp->args->stringspace; in freebsd32_copyout_strings()
3728 if (imgp->auxargs) { in freebsd32_copyout_strings()
3733 destp -= AT_COUNT * sizeof(Elf32_Auxinfo); in freebsd32_copyout_strings()
3743 vectp -= imgp->args->argc + 1 + imgp->args->envc + 1; in freebsd32_copyout_strings()
3750 stringp = imgp->args->begin_argv; in freebsd32_copyout_strings()
3751 argc = imgp->args->argc; in freebsd32_copyout_strings()
3752 envc = imgp->args->envc; in freebsd32_copyout_strings()
3754 * Copy out strings - arguments and environment. in freebsd32_copyout_strings()
3757 ARG_MAX - imgp->args->stringspace); in freebsd32_copyout_strings()
3764 imgp->argv = vectp; in freebsd32_copyout_strings()
3765 if (suword32(&arginfo->ps_argvstr, (uint32_t)(intptr_t)vectp) != 0 || in freebsd32_copyout_strings()
3766 suword32(&arginfo->ps_nargvstr, argc) != 0) in freebsd32_copyout_strings()
3772 for (; argc > 0; --argc) { in freebsd32_copyout_strings()
3784 imgp->envv = vectp; in freebsd32_copyout_strings()
3785 if (suword32(&arginfo->ps_envstr, (uint32_t)(intptr_t)vectp) != 0 || in freebsd32_copyout_strings()
3786 suword32(&arginfo->ps_nenvstr, envc) != 0) in freebsd32_copyout_strings()
3792 for (; envc > 0; --envc) { in freebsd32_copyout_strings()
3804 if (imgp->auxargs) { in freebsd32_copyout_strings()
3806 error = imgp->sysent->sv_copyout_auxargs(imgp, in freebsd32_copyout_strings()
3822 if ((error = copyin(&uap->stat->version, &version, sizeof(version))) in freebsd32_kldstat()
3831 error = kern_kldstat(td, uap->fileid, stat); in freebsd32_kldstat()
3833 bcopy(&stat->name[0], &stat32->name[0], sizeof(stat->name)); in freebsd32_kldstat()
3838 bcopy(&stat->pathname[0], &stat32->pathname[0], in freebsd32_kldstat()
3839 sizeof(stat->pathname)); in freebsd32_kldstat()
3840 stat32->version = version; in freebsd32_kldstat()
3841 error = copyout(stat32, uap->stat, version); in freebsd32_kldstat()
3854 error = kern_posix_fallocate(td, uap->fd, in freebsd32_posix_fallocate()
3855 PAIR32TO64(off_t, uap->offset), PAIR32TO64(off_t, uap->len)); in freebsd32_posix_fallocate()
3865 error = kern_posix_fadvise(td, uap->fd, PAIR32TO64(off_t, uap->offset), in freebsd32_posix_fadvise()
3866 PAIR32TO64(off_t, uap->len), uap->advice); in freebsd32_posix_fadvise()
3875 switch (sig->sigev_notify) { in convert_sigevent32()
3910 if (uap->com >= PROC_PROCCTL_MD_MIN) in freebsd32_procctl()
3911 return (cpu_procctl(td, uap->idtype, PAIR32TO64(id_t, uap->id), in freebsd32_procctl()
3912 uap->com, PTRIN(uap->data))); in freebsd32_procctl()
3914 switch (uap->com) { in freebsd32_procctl()
3924 error = copyin(PTRIN(uap->data), &flags, sizeof(flags)); in freebsd32_procctl()
3931 if (uap->data != NULL) in freebsd32_procctl()
3939 error = copyin(uap->data, &x32.rp, sizeof(x32.rp)); in freebsd32_procctl()
3947 error = copyin(uap->data, &x.rk, sizeof(x.rk)); in freebsd32_procctl()
3963 error = copyin(uap->data, &signum, sizeof(signum)); in freebsd32_procctl()
3974 error = kern_procctl(td, uap->idtype, PAIR32TO64(id_t, uap->id), in freebsd32_procctl()
3975 uap->com, data); in freebsd32_procctl()
3976 switch (uap->com) { in freebsd32_procctl()
3979 error = copyout(&x.rs, uap->data, sizeof(x.rs)); in freebsd32_procctl()
3982 error1 = copyout(&x.rk, uap->data, sizeof(x.rk)); in freebsd32_procctl()
3995 error = copyout(&flags, uap->data, sizeof(flags)); in freebsd32_procctl()
3999 error = copyout(&signum, uap->data, sizeof(signum)); in freebsd32_procctl()
4010 switch (uap->cmd) { in freebsd32_fcntl()
4025 tmp = (unsigned int)(uap->arg); in freebsd32_fcntl()
4028 tmp = uap->arg; in freebsd32_fcntl()
4031 return (kern_fcntl_freebsd(td, uap->fd, uap->cmd, tmp)); in freebsd32_fcntl()
4042 if (uap->ts != NULL) { in freebsd32_ppoll()
4043 error = copyin(uap->ts, &ts32, sizeof(ts32)); in freebsd32_ppoll()
4051 if (uap->set != NULL) { in freebsd32_ppoll()
4052 error = copyin(uap->set, &set, sizeof(set)); in freebsd32_ppoll()
4059 return (kern_poll(td, uap->fds, uap->nfds, tsp, ssp)); in freebsd32_ppoll()
4070 error = kern_sched_rr_get_interval(td, uap->pid, &ts); in freebsd32_sched_rr_get_interval()
4074 error = copyout(&ts32, uap->interval, sizeof(ts32)); in freebsd32_sched_rr_get_interval()
4130 error = copyin(uap->tp, &tx32, sizeof(tx32)); in freebsd32_ntp_adjtime()
4136 error = copyout(&tx32, uap->tp, sizeof(tx32)); in freebsd32_ntp_adjtime()
4138 td->td_retval[0] = retval; in freebsd32_ntp_adjtime()
4161 if ((error = copyin(uap->cest, &cest32, in freebsd32_ffclock_setestimate()
4206 error = copyout(&cest32, uap->cest, sizeof(struct ffclock_estimate32)); in freebsd32_ffclock_getestimate()
4232 hostid = uap->hostid; in ofreebsd32_sethostid()
4242 return (user_setcred(td, uap->flags, uap->wcred, uap->size, true)); in freebsd32_setcred()