Lines Matching +full:ts +full:- +full:attached
1 /*-
2 * SPDX-License-Identifier: BSD-3-Clause
89 * currently hard-aligned to a 8-byte boundary on the stack. This
133 * One seltd per-thread allocated on demand as needed.
135 * t - protected by st_mtx
136 * k - Only accessed by curthread or read-only
151 * One selfd allocated per-thread per-file-descriptor.
152 * f - protected by sf_mtx
198 if (uap->nbyte > IOSIZE_MAX) in sys_read()
200 aiov.iov_base = uap->buf; in sys_read()
201 aiov.iov_len = uap->nbyte; in sys_read()
204 auio.uio_resid = uap->nbyte; in sys_read()
206 error = kern_readv(td, uap->fd, &auio); in sys_read()
226 return (kern_pread(td, uap->fd, uap->buf, uap->nbyte, uap->offset)); in sys_pread()
253 return (kern_pread(td, uap->fd, uap->buf, uap->nbyte, uap->offset)); in freebsd6_pread()
273 error = copyinuio(uap->iovp, uap->iovcnt, &auio); in sys_readv()
276 error = kern_readv(td, uap->fd, auio); in sys_readv()
290 error = dofileread(td, fd, fp, auio, (off_t)-1, 0); in kern_readv()
312 error = copyinuio(uap->iovp, uap->iovcnt, &auio); in sys_preadv()
315 error = kern_preadv(td, uap->fd, auio, uap->offset); in sys_preadv()
329 if (!(fp->f_ops->fo_flags & DFLAG_SEEKABLE)) in kern_preadv()
332 (fp->f_vnode == NULL || fp->f_vnode->v_type != VCHR)) in kern_preadv()
357 if (auio->uio_resid == 0) { in dofileread()
358 td->td_retval[0] = 0; in dofileread()
361 auio->uio_rw = UIO_READ; in dofileread()
362 auio->uio_offset = offset; in dofileread()
363 auio->uio_td = td; in dofileread()
368 cnt = auio->uio_resid; in dofileread()
369 if ((error = fo_read(fp, auio, td->td_ucred, flags, td))) { in dofileread()
370 if (auio->uio_resid != cnt && (error == ERESTART || in dofileread()
374 cnt -= auio->uio_resid; in dofileread()
377 ktruio->uio_resid = cnt; in dofileread()
381 td->td_retval[0] = cnt; in dofileread()
399 if (uap->nbyte > IOSIZE_MAX) in sys_write()
401 aiov.iov_base = (void *)(uintptr_t)uap->buf; in sys_write()
402 aiov.iov_len = uap->nbyte; in sys_write()
405 auio.uio_resid = uap->nbyte; in sys_write()
407 error = kern_writev(td, uap->fd, &auio); in sys_write()
427 return (kern_pwrite(td, uap->fd, uap->buf, uap->nbyte, uap->offset)); in sys_pwrite()
455 return (kern_pwrite(td, uap->fd, uap->buf, uap->nbyte, uap->offset)); in freebsd6_pwrite()
475 error = copyinuio(uap->iovp, uap->iovcnt, &auio); in sys_writev()
478 error = kern_writev(td, uap->fd, auio); in sys_writev()
492 error = dofilewrite(td, fd, fp, auio, (off_t)-1, 0); in kern_writev()
514 error = copyinuio(uap->iovp, uap->iovcnt, &auio); in sys_pwritev()
517 error = kern_pwritev(td, uap->fd, auio, uap->offset); in sys_pwritev()
531 if (!(fp->f_ops->fo_flags & DFLAG_SEEKABLE)) in kern_pwritev()
534 (fp->f_vnode == NULL || fp->f_vnode->v_type != VCHR)) in kern_pwritev()
557 auio->uio_rw = UIO_WRITE; in dofilewrite()
558 auio->uio_td = td; in dofilewrite()
559 auio->uio_offset = offset; in dofilewrite()
564 cnt = auio->uio_resid; in dofilewrite()
565 error = fo_write(fp, auio, td->td_ucred, flags, td); in dofilewrite()
570 if (error != 0 && fp->f_type != DTYPE_SOCKET) { in dofilewrite()
571 if (auio->uio_resid != cnt && (error == ERESTART || in dofilewrite()
575 PROC_LOCK(td->td_proc); in dofilewrite()
577 PROC_UNLOCK(td->td_proc); in dofilewrite()
580 cnt -= auio->uio_resid; in dofilewrite()
584 ktruio->uio_resid = cnt; in dofilewrite()
588 td->td_retval[0] = cnt; in dofilewrite()
610 AUDIT_ARG_FILE(td->td_proc, fp); in kern_ftruncate()
611 if (!(fp->f_flag & FWRITE)) { in kern_ftruncate()
613 return (EXTERROR(EINVAL, "non-writable")); in kern_ftruncate()
615 error = fo_truncate(fp, length, td->td_ucred, td); in kern_ftruncate()
631 return (kern_ftruncate(td, uap->fd, uap->length)); in sys_ftruncate()
645 return (kern_ftruncate(td, uap->fd, uap->length)); in oftruncate()
667 if (uap->com > 0xffffffff) { in sys_ioctl()
669 "WARNING pid %d (%s): ioctl sign-extension ioctl %lx\n", in sys_ioctl()
670 td->td_proc->p_pid, td->td_name, uap->com); in sys_ioctl()
673 com = (uint32_t)uap->com; in sys_ioctl()
693 arg = (intptr_t)uap->data; in sys_ioctl()
703 data = (void *)&uap->data; in sys_ioctl()
705 error = copyin(uap->data, data, (u_int)size); in sys_ioctl()
716 error = kern_ioctl(td, uap->fd, com, data); in sys_ioctl()
719 error = copyout(data, uap->data, (u_int)size); in sys_ioctl()
737 fdp = td->td_proc->p_fd; in kern_ioctl()
780 if ((fp->f_flag & (FREAD | FWRITE)) == 0) { in kern_ioctl()
788 fdp->fd_ofiles[fd].fde_flags &= ~UF_EXCLOSE; in kern_ioctl()
791 fdp->fd_ofiles[fd].fde_flags |= UF_EXCLOSE; in kern_ioctl()
798 if (((fp->f_flag & f_flag) != 0) != (tmp != 0)) { in kern_ioctl()
799 error = fo_ioctl(fp, com, (void *)&tmp, td->td_ucred, in kern_ioctl()
803 atomic_set_int(&fp->f_flag, f_flag); in kern_ioctl()
805 atomic_clear_int(&fp->f_flag, f_flag); in kern_ioctl()
811 error = fo_ioctl(fp, com, data, td->td_ucred, td); in kern_ioctl()
839 error = kern_posix_fallocate(td, uap->fd, uap->offset, uap->len); in sys_posix_fallocate()
855 if (offset > OFF_MAX - len) in kern_posix_fallocate()
861 AUDIT_ARG_FILE(td->td_proc, fp); in kern_posix_fallocate()
862 if ((fp->f_ops->fo_flags & DFLAG_SEEKABLE) == 0) { in kern_posix_fallocate()
866 if ((fp->f_flag & FWRITE) == 0) { in kern_posix_fallocate()
883 error = copyin(uap->rqsr, &rqsr, sizeof(rqsr)); in sys_fspacectl()
887 error = kern_fspacectl(td, uap->fd, uap->cmd, &rqsr, uap->flags, in sys_fspacectl()
889 if (uap->rmsr != NULL) { in sys_fspacectl()
890 cerror = copyout(&rmsr, uap->rmsr, sizeof(rmsr)); in sys_fspacectl()
917 if (rqsr->r_offset < 0) in kern_fspacectl()
919 if (rqsr->r_len <= 0) in kern_fspacectl()
921 if (rqsr->r_offset > OFF_MAX - rqsr->r_len) in kern_fspacectl()
929 AUDIT_ARG_FILE(td->td_proc, fp); in kern_fspacectl()
930 if ((fp->f_ops->fo_flags & DFLAG_SEEKABLE) == 0) { in kern_fspacectl()
934 if ((fp->f_flag & FWRITE) == 0) { in kern_fspacectl()
940 td->td_ucred, td); in kern_fspacectl()
942 if (rmsr.r_len != rqsr->r_len && (error == ERESTART || in kern_fspacectl()
968 if ((ae->flags & EFD_CLOEXEC) != 0) in kern_specialfd()
970 error = eventfd_create_file(td, fp, ae->initval, ae->flags); in kern_specialfd()
977 error = inotify_create_file(td, fp, si->flags, &fflags); in kern_specialfd()
989 td->td_retval[0] = fd; in kern_specialfd()
998 switch (args->type) { in sys___specialfd()
1002 if (args->len != sizeof(struct specialfd_eventfd)) { in sys___specialfd()
1006 error = copyin(args->req, &ae, sizeof(ae)); in sys___specialfd()
1014 error = kern_specialfd(td, args->type, &ae); in sys___specialfd()
1020 if (args->len != sizeof(si)) { in sys___specialfd()
1024 error = copyin(args->req, &si, sizeof(si)); in sys___specialfd()
1027 error = kern_specialfd(td, args->type, &si); in sys___specialfd()
1031 error = EXTERROR(EINVAL, "unknown type", args->type); in sys___specialfd()
1044 * functionality is present without hard-coding knowledge in poll_no_poll()
1056 struct timespec ts; in sys_pselect() local
1061 if (uap->ts != NULL) { in sys_pselect()
1062 error = copyin(uap->ts, &ts, sizeof(ts)); in sys_pselect()
1065 TIMESPEC_TO_TIMEVAL(&tv, &ts); in sys_pselect()
1069 if (uap->sm != NULL) { in sys_pselect()
1070 error = copyin(uap->sm, &set, sizeof(set)); in sys_pselect()
1076 return (kern_pselect(td, uap->nd, uap->in, uap->ou, uap->ex, tvp, in sys_pselect()
1088 &td->td_oldsigmask, 0); in kern_pselect()
1091 td->td_pflags |= TDP_OLDMASK; in kern_pselect()
1128 if (uap->tv != NULL) { in sys_select()
1129 error = copyin(uap->tv, &tv, sizeof(tv)); in sys_select()
1136 return (kern_select(td, uap->nd, uap->in, uap->ou, uap->ex, tvp, in sys_select()
1169 sizeof(fd_mask) - 1 - b % sizeof(fd_mask); in select_check_badfd()
1172 sizeof(uint32_t) - 1 - b % sizeof(uint32_t); in select_check_badfd()
1177 if (res == -1) in select_check_badfd()
1208 fdp = td->td_proc->p_fd; in kern_select()
1210 lf = fdp->fd_nfiles; in kern_select()
1225 * Allocate just enough bits for the non-null fd_sets. Use the in kern_select()
1263 ncpbytes - ncpubytes); \ in kern_select()
1274 * we are running under 32-bit emulation. This should be more in kern_select()
1311 if (asbt <= SBT_MAX - rsbt) in kern_select()
1314 asbt = -1; in kern_select()
1316 asbt = -1; in kern_select()
1318 asbt = -1; in kern_select()
1323 if (error || td->td_retval[0] != 0) in kern_select()
1329 if (error || td->td_retval[0] != 0) in kern_select()
1430 * Traverse the list of fds attached to this thread's seltd and check for
1447 fdp = td->td_proc->p_fd; in selrescan()
1448 stp = td->td_sel; in selrescan()
1451 STAILQ_FOREACH_SAFE(sfp, &stp->st_selq, sf_link, sfn) { in selrescan()
1452 fd = (int)(uintptr_t)sfp->sf_cookie; in selrescan()
1453 si = sfp->sf_si; in selrescan()
1466 ev = fo_poll(fp, selflags(ibits, idx, bit), td->td_ucred, td); in selrescan()
1474 stp->st_flags = 0; in selrescan()
1475 td->td_retval[0] = n; in selrescan()
1494 fdp = td->td_proc->p_fd; in selscan()
1511 ev = fo_poll(fp, flags, td->td_ucred, td); in selscan()
1521 td->td_retval[0] = n; in selscan()
1528 struct timespec ts, *tsp; in sys_poll() local
1530 if (uap->timeout != INFTIM) { in sys_poll()
1531 if (uap->timeout < 0) in sys_poll()
1533 ts.tv_sec = uap->timeout / 1000; in sys_poll()
1534 ts.tv_nsec = (uap->timeout % 1000) * 1000000; in sys_poll()
1535 tsp = &ts; in sys_poll()
1539 return (kern_poll(td, uap->fds, uap->nfds, tsp, NULL)); in sys_poll()
1551 struct timespec ts; in kern_poll_kfds() local
1558 if (tsp->tv_sec == 0 && tsp->tv_nsec == 0) in kern_poll_kfds()
1561 ts = *tsp; in kern_poll_kfds()
1562 if (ts.tv_sec > INT32_MAX / 2) { in kern_poll_kfds()
1563 over = ts.tv_sec - INT32_MAX / 2; in kern_poll_kfds()
1564 ts.tv_sec -= over; in kern_poll_kfds()
1567 tmp = tstosbt(ts); in kern_poll_kfds()
1575 sbt = -1; in kern_poll_kfds()
1579 &td->td_oldsigmask, 0); in kern_poll_kfds()
1582 td->td_pflags |= TDP_OLDMASK; in kern_poll_kfds()
1589 if (error || td->td_retval[0] != 0) in kern_poll_kfds()
1595 if (error || td->td_retval[0] != 0) in kern_poll_kfds()
1627 struct timespec ts, *tsp; in sys_ppoll() local
1631 if (uap->ts != NULL) { in sys_ppoll()
1632 error = copyin(uap->ts, &ts, sizeof(ts)); in sys_ppoll()
1635 tsp = &ts; in sys_ppoll()
1638 if (uap->set != NULL) { in sys_ppoll()
1639 error = copyin(uap->set, &set, sizeof(set)); in sys_ppoll()
1645 return (kern_poll(td, uap->fds, uap->nfds, tsp, ssp)); in sys_ppoll()
1692 * least enough for the system-wide limits. We want to be reasonably in kern_poll_maxfds()
1712 fdp = td->td_proc->p_fd; in pollrescan()
1713 stp = td->td_sel; in pollrescan()
1715 STAILQ_FOREACH_SAFE(sfp, &stp->st_selq, sf_link, sfn) { in pollrescan()
1716 fd = (struct pollfd *)sfp->sf_cookie; in pollrescan()
1717 si = sfp->sf_si; in pollrescan()
1723 error = fget_only_user(fdp, fd->fd, &cap_event_rights, &fp); in pollrescan()
1725 error = fget_unlocked(td, fd->fd, &cap_event_rights, &fp); in pollrescan()
1727 fd->revents = POLLNVAL; in pollrescan()
1735 fd->revents = fo_poll(fp, fd->events, td->td_ucred, td); in pollrescan()
1740 if (fd->revents != 0) in pollrescan()
1743 stp->st_flags = 0; in pollrescan()
1744 td->td_retval[0] = n; in pollrescan()
1756 error = copyout(&fds->revents, &ufds->revents, in pollout()
1757 sizeof(ufds->revents)); in pollout()
1760 if (fds->revents != 0) in pollout()
1765 td->td_retval[0] = n; in pollout()
1778 fdp = td->td_proc->p_fd; in pollscan()
1781 if (fds->fd < 0) { in pollscan()
1782 fds->revents = 0; in pollscan()
1786 error = fget_only_user(fdp, fds->fd, &cap_event_rights, &fp); in pollscan()
1788 error = fget_unlocked(td, fds->fd, &cap_event_rights, &fp); in pollscan()
1790 fds->revents = POLLNVAL; in pollscan()
1799 fds->revents = fo_poll(fp, fds->events, in pollscan()
1800 td->td_ucred, td); in pollscan()
1809 if ((fds->revents & POLLHUP) != 0) in pollscan()
1810 fds->revents &= ~POLLOUT; in pollscan()
1812 if (fds->revents != 0) in pollscan()
1815 td->td_retval[0] = n; in pollscan()
1846 if (asbt <= SBT_MAX - rsbt) in selsocket()
1849 asbt = -1; in selsocket()
1851 asbt = -1; in selsocket()
1853 asbt = -1; in selsocket()
1860 if (so->so_proto->pr_sopoll(so, events, td) != 0) { in selsocket()
1884 stp = td->td_sel; in selfdalloc()
1885 if (stp->st_free1 == NULL) in selfdalloc()
1886 stp->st_free1 = malloc(sizeof(*stp->st_free1), M_SELFD, M_WAITOK|M_ZERO); in selfdalloc()
1887 stp->st_free1->sf_td = stp; in selfdalloc()
1888 stp->st_free1->sf_cookie = cookie; in selfdalloc()
1889 if (stp->st_free2 == NULL) in selfdalloc()
1890 stp->st_free2 = malloc(sizeof(*stp->st_free2), M_SELFD, M_WAITOK|M_ZERO); in selfdalloc()
1891 stp->st_free2->sf_td = stp; in selfdalloc()
1892 stp->st_free2->sf_cookie = cookie; in selfdalloc()
1898 STAILQ_REMOVE(&stp->st_selq, sfp, selfd, sf_link); in selfdfree()
1902 if (atomic_load_acq_ptr((uintptr_t *)&sfp->sf_si) != (uintptr_t)NULL) { in selfdfree()
1903 mtx_lock(sfp->sf_mtx); in selfdfree()
1904 if (sfp->sf_si != NULL) { in selfdfree()
1905 TAILQ_REMOVE(&sfp->sf_si->si_tdlist, sfp, sf_threads); in selfdfree()
1907 mtx_unlock(sfp->sf_mtx); in selfdfree()
1925 doselwakeup(sip, -1); in seldrain()
1938 stp = selector->td_sel; in selrecord()
1942 if (stp->st_flags & SELTD_RESCAN) in selrecord()
1948 if ((sfp = stp->st_free1) != NULL) in selrecord()
1949 stp->st_free1 = NULL; in selrecord()
1950 else if ((sfp = stp->st_free2) != NULL) in selrecord()
1951 stp->st_free2 = NULL; in selrecord()
1954 mtxp = sip->si_mtx; in selrecord()
1960 sfp->sf_si = sip; in selrecord()
1961 sfp->sf_mtx = mtxp; in selrecord()
1962 STAILQ_INSERT_TAIL(&stp->st_selq, sfp, sf_link); in selrecord()
1967 if (sip->si_mtx == NULL) { in selrecord()
1968 sip->si_mtx = mtxp; in selrecord()
1969 TAILQ_INIT(&sip->si_tdlist); in selrecord()
1974 TAILQ_INSERT_TAIL(&sip->si_tdlist, sfp, sf_threads); in selrecord()
1975 mtx_unlock(sip->si_mtx); in selrecord()
1982 doselwakeup(sip, -1); in selwakeup()
2003 if (sip->si_mtx == NULL) in doselwakeup()
2008 mtx_lock(sip->si_mtx); in doselwakeup()
2009 TAILQ_FOREACH_SAFE(sfp, &sip->si_tdlist, sf_threads, sfn) { in doselwakeup()
2014 TAILQ_REMOVE(&sip->si_tdlist, sfp, sf_threads); in doselwakeup()
2015 stp = sfp->sf_td; in doselwakeup()
2016 mtx_lock(&stp->st_mtx); in doselwakeup()
2017 stp->st_flags |= SELTD_PENDING; in doselwakeup()
2018 cv_broadcastpri(&stp->st_wait, pri); in doselwakeup()
2019 mtx_unlock(&stp->st_mtx); in doselwakeup()
2026 atomic_store_rel_ptr((uintptr_t *)&sfp->sf_si, (uintptr_t)NULL); in doselwakeup()
2028 mtx_unlock(sip->si_mtx); in doselwakeup()
2036 stp = td->td_sel; in seltdinit()
2038 MPASS(stp->st_flags == 0); in seltdinit()
2039 MPASS(STAILQ_EMPTY(&stp->st_selq)); in seltdinit()
2043 mtx_init(&stp->st_mtx, "sellck", NULL, MTX_DEF); in seltdinit()
2044 cv_init(&stp->st_wait, "select"); in seltdinit()
2045 stp->st_flags = 0; in seltdinit()
2046 STAILQ_INIT(&stp->st_selq); in seltdinit()
2047 td->td_sel = stp; in seltdinit()
2056 stp = td->td_sel; in seltdwait()
2061 mtx_lock(&stp->st_mtx); in seltdwait()
2065 stp->st_flags |= SELTD_RESCAN; in seltdwait()
2066 if (stp->st_flags & SELTD_PENDING) { in seltdwait()
2067 mtx_unlock(&stp->st_mtx); in seltdwait()
2072 else if (sbt != -1) in seltdwait()
2073 error = cv_timedwait_sig_sbt(&stp->st_wait, &stp->st_mtx, in seltdwait()
2076 error = cv_wait_sig(&stp->st_wait, &stp->st_mtx); in seltdwait()
2077 mtx_unlock(&stp->st_mtx); in seltdwait()
2087 stp = td->td_sel; in seltdfini()
2090 MPASS(stp->st_flags == 0); in seltdfini()
2091 MPASS(STAILQ_EMPTY(&stp->st_selq)); in seltdfini()
2092 if (stp->st_free1) in seltdfini()
2093 free(stp->st_free1, M_SELFD); in seltdfini()
2094 if (stp->st_free2) in seltdfini()
2095 free(stp->st_free2, M_SELFD); in seltdfini()
2096 td->td_sel = NULL; in seltdfini()
2097 cv_destroy(&stp->st_wait); in seltdfini()
2098 mtx_destroy(&stp->st_mtx); in seltdfini()
2113 stp = td->td_sel; in seltdclear()
2114 STAILQ_FOREACH_SAFE(sfp, &stp->st_selq, sf_link, sfn) in seltdclear()
2116 stp->st_flags = 0; in seltdclear()
2138 td->td_errno = error; in kern_posix_error()
2139 td->td_pflags |= TDP_NERRNO; in kern_posix_error()
2140 td->td_retval[0] = error; in kern_posix_error()
2159 if (pid == td->td_proc->p_pid) { in kcmp_pget()
2160 *pp = td->td_proc; in kcmp_pget()
2165 MPASS(*pp != td->td_proc); in kcmp_pget()
2177 res = -1; in kern_kcmp()
2203 res = kcmp_cmp((uintptr_t)p1->p_fd, (uintptr_t)p2->p_fd); in kern_kcmp()
2206 res = kcmp_cmp((uintptr_t)p1->p_sigacts, in kern_kcmp()
2207 (uintptr_t)p2->p_sigacts); in kern_kcmp()
2210 res = kcmp_cmp((uintptr_t)p1->p_vmspace, in kern_kcmp()
2211 (uintptr_t)p2->p_vmspace); in kern_kcmp()
2219 if (p1 != NULL && p1 != td->td_proc) in kern_kcmp()
2221 if (p2 != NULL && p2 != td->td_proc) in kern_kcmp()
2224 td->td_retval[0] = res; in kern_kcmp()
2231 return (kern_kcmp(td, uap->pid1, uap->pid2, uap->type, in sys_kcmp()
2232 uap->idx1, uap->idx2)); in sys_kcmp()
2238 if (fp1->f_type != fp2->f_type) in file_kcmp_generic()
2240 return (kcmp_cmp((uintptr_t)fp1->f_data, (uintptr_t)fp2->f_data)); in file_kcmp_generic()
2246 if ((td->td_pflags2 & TDP2_EXTERR) == 0) in exterr_to_ue()
2250 ue->error = td->td_kexterr.error; in exterr_to_ue()
2251 ue->cat = td->td_kexterr.cat; in exterr_to_ue()
2252 ue->src_line = td->td_kexterr.src_line; in exterr_to_ue()
2253 ue->p1 = td->td_kexterr.p1; in exterr_to_ue()
2254 ue->p2 = td->td_kexterr.p2; in exterr_to_ue()
2255 if (td->td_kexterr.msg != NULL) in exterr_to_ue()
2256 strlcpy(ue->msg, td->td_kexterr.msg, sizeof(ue->msg)); in exterr_to_ue()
2269 MPASS((td->td_pflags2 & TDP2_UEXTERR) != 0); in exterr_copyout()
2271 uloc = (char *)td->td_exterr_ptr + __offsetof(struct uexterror, in exterr_copyout()
2279 sz = sizeof(ue) - __offsetof(struct uexterror, error); in exterr_copyout()
2283 td->td_pflags2 &= ~TDP2_UEXTERR; in exterr_copyout()
2298 if ((uap->flags & ~(EXTERRCTLF_FORCE)) != 0) in sys_exterrctl()
2300 switch (uap->op) { in sys_exterrctl()
2302 if ((td->td_pflags2 & TDP2_UEXTERR) != 0 && in sys_exterrctl()
2303 (uap->flags & EXTERRCTLF_FORCE) == 0) in sys_exterrctl()
2305 td->td_pflags2 &= ~TDP2_UEXTERR; in sys_exterrctl()
2306 error = copyin(uap->ptr, &ver, sizeof(ver)); in sys_exterrctl()
2311 td->td_pflags2 |= TDP2_UEXTERR; in sys_exterrctl()
2312 td->td_exterr_ptr = uap->ptr; in sys_exterrctl()
2315 if ((td->td_pflags2 & TDP2_UEXTERR) == 0) in sys_exterrctl()
2317 td->td_pflags2 &= ~TDP2_UEXTERR; in sys_exterrctl()
2337 if ((td->td_pflags2 & TDP2_UEXTERR) != 0) { in exterr_set()
2338 td->td_pflags2 |= TDP2_EXTERR; in exterr_set()
2339 td->td_kexterr.error = eerror; in exterr_set()
2340 td->td_kexterr.cat = category; in exterr_set()
2341 td->td_kexterr.msg = mmsg; in exterr_set()
2342 td->td_kexterr.p1 = pp1; in exterr_set()
2343 td->td_kexterr.p2 = pp2; in exterr_set()
2344 td->td_kexterr.src_line = line; in exterr_set()
2355 if ((td->td_pflags2 & TDP2_UEXTERR) != 0) { in exterr_set_from()
2356 td->td_pflags2 |= TDP2_EXTERR; in exterr_set_from()
2357 td->td_kexterr = *ke; in exterr_set_from()
2359 return (td->td_kexterr.error); in exterr_set_from()
2376 ke->error, ke->cat, ke->msg == NULL ? "<none>" : ke->msg, in exterr_db_print()
2377 (uintmax_t)ke->p1, (uintmax_t)ke->p2, ke->src_line); in exterr_db_print()