Lines Matching +full:ps +full:- +full:seq +full:- +full:loop

1 /*-
2 * SPDX-License-Identifier: BSD-3-Clause
109 MALLOC_DEFINE(M_SUBPROC, "subproc", "Proc sub-structures");
195 pidhashlock--; in procinit()
245 KASSERT((p->p_numthreads == 1), in proc_dtor()
247 KASSERT(STAILQ_EMPTY(&p->p_ktr), ("proc_dtor: non-empty p_ktr")); in proc_dtor()
260 if (p->p_ksi != NULL) in proc_dtor()
261 KASSERT(! KSI_ONQ(p->p_ksi), ("SIGCHLD queue")); in proc_dtor()
265 * Initialize type-stable parts of a proc (when newly created).
273 mtx_init(&p->p_mtx, "process lock", NULL, MTX_DEF | MTX_DUPOK | MTX_NEW); in proc_init()
274 mtx_init(&p->p_slock, "process slock", NULL, MTX_SPIN | MTX_NEW); in proc_init()
275 mtx_init(&p->p_statmtx, "pstatl", NULL, MTX_SPIN | MTX_NEW); in proc_init()
276 mtx_init(&p->p_itimmtx, "pitiml", NULL, MTX_SPIN | MTX_NEW); in proc_init()
277 mtx_init(&p->p_profmtx, "pprofl", NULL, MTX_SPIN | MTX_NEW); in proc_init()
278 cv_init(&p->p_pwait, "ppwait"); in proc_init()
279 TAILQ_INIT(&p->p_threads); /* all threads in proc */ in proc_init()
281 p->p_stats = pstats_alloc(); in proc_init()
282 p->p_pgrp = NULL; in proc_init()
283 TAILQ_INIT(&p->p_kqtim_stop); in proc_init()
299 pstats_free(p->p_stats); in proc_fini()
301 mtx_destroy(&p->p_mtx); in proc_fini()
302 if (p->p_ksi != NULL) in proc_fini()
303 ksiginfo_free(p->p_ksi); in proc_fini()
315 mtx_init(&pg->pg_mtx, "process group", NULL, MTX_DEF | MTX_DUPOK); in pgrp_init()
316 sx_init(&pg->pg_killsx, "killpg racer"); in pgrp_init()
386 if (p->p_pid == 0) in inferior()
426 if (p->p_pid == pid) { in pfind_any_locked()
428 if (p->p_state == PRS_NEW) { in pfind_any_locked()
450 if (p->p_pid == pid) { in _pfind()
456 if (p->p_pid == pid) { in _pfind()
458 if (p->p_state == PRS_NEW || in _pfind()
459 (!zombie && p->p_state == PRS_ZOMBIE)) { in _pfind()
499 if (pgrp->pg_id == pgid) { in pgfind()
518 if (p->p_pid == pid) { in pget()
528 td1 = tdfind(pid, -1); in pget()
530 p = td1->td_proc; in pget()
549 if ((flags & PGET_NOTWEXIT) != 0 && (p->p_flag & P_WEXIT) != 0) { in pget()
553 if ((flags & PGET_NOTINEXEC) != 0 && (p->p_flag & P_INEXEC) != 0) { in pget()
585 KASSERT(p->p_pid == pgid, in enterpgrp()
592 old_pgrp = p->p_pgrp; in enterpgrp()
593 if (!sx_try_xlock(&old_pgrp->pg_killsx)) { in enterpgrp()
595 sx_xlock(&old_pgrp->pg_killsx); in enterpgrp()
596 sx_xunlock(&old_pgrp->pg_killsx); in enterpgrp()
599 MPASS(old_pgrp == p->p_pgrp); in enterpgrp()
605 mtx_init(&sess->s_mtx, "session", NULL, MTX_DEF); in enterpgrp()
607 p->p_flag &= ~P_CONTROLT; in enterpgrp()
610 sess->s_leader = p; in enterpgrp()
611 sess->s_sid = p->p_pid; in enterpgrp()
612 proc_id_set(PROC_ID_SESSION, p->p_pid); in enterpgrp()
613 refcount_init(&sess->s_count, 1); in enterpgrp()
614 sess->s_ttyvp = NULL; in enterpgrp()
615 sess->s_ttydp = NULL; in enterpgrp()
616 sess->s_ttyp = NULL; in enterpgrp()
617 bcopy(p->p_session->s_login, sess->s_login, in enterpgrp()
618 sizeof(sess->s_login)); in enterpgrp()
619 pgrp->pg_session = sess; in enterpgrp()
623 pgrp->pg_session = p->p_session; in enterpgrp()
624 sess_hold(pgrp->pg_session); in enterpgrp()
627 pgrp->pg_id = pgid; in enterpgrp()
628 proc_id_set(PROC_ID_GROUP, p->p_pid); in enterpgrp()
629 LIST_INIT(&pgrp->pg_members); in enterpgrp()
630 pgrp->pg_flags = 0; in enterpgrp()
637 SLIST_INIT(&pgrp->pg_sigiolst); in enterpgrp()
642 sx_xunlock(&old_pgrp->pg_killsx); in enterpgrp()
657 PGRP_LOCK_ASSERT(p->p_pgrp, MA_NOTOWNED); in enterthispgrp()
658 SESS_LOCK_ASSERT(p->p_session, MA_NOTOWNED); in enterthispgrp()
659 KASSERT(pgrp->pg_session == p->p_session, in enterthispgrp()
660 ("%s: pgrp's session %p, p->p_session %p proc %p\n", in enterthispgrp()
661 __func__, pgrp->pg_session, p->p_session, p)); in enterthispgrp()
662 KASSERT(pgrp != p->p_pgrp, in enterthispgrp()
665 old_pgrp = p->p_pgrp; in enterthispgrp()
666 if (!sx_try_xlock(&old_pgrp->pg_killsx)) { in enterthispgrp()
668 sx_xlock(&old_pgrp->pg_killsx); in enterthispgrp()
669 sx_xunlock(&old_pgrp->pg_killsx); in enterthispgrp()
672 MPASS(old_pgrp == p->p_pgrp); in enterthispgrp()
673 if (!sx_try_xlock(&pgrp->pg_killsx)) { in enterthispgrp()
674 sx_xunlock(&old_pgrp->pg_killsx); in enterthispgrp()
676 sx_xlock(&pgrp->pg_killsx); in enterthispgrp()
677 sx_xunlock(&pgrp->pg_killsx); in enterthispgrp()
683 sx_xunlock(&pgrp->pg_killsx); in enterthispgrp()
684 sx_xunlock(&old_pgrp->pg_killsx); in enterthispgrp()
697 return (q->p_pgrp != pgrp && in isjobproc()
698 q->p_pgrp->pg_session == pgrp->pg_session); in isjobproc()
709 pp = pp->p_reaper; in jobc_reaper()
710 if (pp->p_reaper == pp || in jobc_reaper()
711 (pp->p_treeflag & P_TREE_GRPEXITED) == 0) in jobc_reaper()
724 if (pp->p_pptr == NULL || pp == p_exiting || in jobc_parent()
725 (pp->p_treeflag & P_TREE_GRPEXITED) == 0) in jobc_parent()
737 if (!mtx_owned(&pgrp->pg_mtx)) in pgrp_calc_jobc()
742 LIST_FOREACH(q, &pgrp->pg_members, p_pglist) { in pgrp_calc_jobc()
743 if ((q->p_treeflag & P_TREE_GRPEXITED) != 0 || in pgrp_calc_jobc()
744 q->p_pptr == NULL) in pgrp_calc_jobc()
764 PGRP_LOCK_ASSERT(p->p_pgrp, MA_NOTOWNED); in doenterpgrp()
765 SESS_LOCK_ASSERT(p->p_session, MA_NOTOWNED); in doenterpgrp()
767 savepgrp = p->p_pgrp; in doenterpgrp()
776 p->p_pgrp = pgrp; in doenterpgrp()
778 LIST_INSERT_HEAD(&pgrp->pg_members, p, p_pglist); in doenterpgrp()
780 pgrp->pg_flags &= ~PGRP_ORPHANED; in doenterpgrp()
783 if (LIST_EMPTY(&savepgrp->pg_members)) in doenterpgrp()
796 savepgrp = p->p_pgrp; in leavepgrp()
800 p->p_pgrp = NULL; in leavepgrp()
803 if (LIST_EMPTY(&savepgrp->pg_members)) in leavepgrp()
819 SESS_LOCK_ASSERT(pgrp->pg_session, MA_NOTOWNED); in pgdelete()
826 funsetownlst(&pgrp->pg_sigiolst); in pgdelete()
829 tp = pgrp->pg_session->s_ttyp; in pgdelete()
831 savesess = pgrp->pg_session; in pgdelete()
840 proc_id_clear(PROC_ID_GROUP, pgrp->pg_id); in pgdelete()
854 pgrp = p->p_pgrp; in fixjobc_kill()
856 SESS_LOCK_ASSERT(pgrp->pg_session, MA_NOTOWNED); in fixjobc_kill()
863 MPASS((p->p_treeflag & P_TREE_GRPEXITED) == 0); in fixjobc_kill()
864 p->p_treeflag |= P_TREE_GRPEXITED; in fixjobc_kill()
869 pgrp = p->p_pgrp; in fixjobc_kill()
881 LIST_FOREACH(q, &p->p_children, p_sibling) { in fixjobc_kill()
882 pgrp = q->p_pgrp; in fixjobc_kill()
894 pgrp->pg_flags &= ~PGRP_ORPHANED; in fixjobc_kill()
897 LIST_FOREACH(q, &p->p_orphans, p_orphan) { in fixjobc_kill()
898 pgrp = q->p_pgrp; in fixjobc_kill()
904 pgrp->pg_flags &= ~PGRP_ORPHANED; in fixjobc_kill()
918 MPASS(p->p_flag & P_WEXIT); in killjobc()
922 sp = p->p_session; in killjobc()
930 ttyvp = sp->s_ttyvp; in killjobc()
931 tp = sp->s_ttyp; in killjobc()
932 sp->s_ttyvp = NULL; in killjobc()
933 sp->s_ttydp = NULL; in killjobc()
934 sp->s_leader = NULL; in killjobc()
951 if (tp->t_session == sp) in killjobc()
972 * hang-up all process in that group.
981 pg->pg_flags |= PGRP_ORPHANED; in orphanpg()
983 LIST_FOREACH(p, &pg->pg_members, p_pglist) { in orphanpg()
987 LIST_FOREACH(p, &pg->pg_members, p_pglist) { in orphanpg()
1003 refcount_acquire(&s->s_count); in sess_hold()
1010 if (refcount_release(&s->s_count)) { in sess_release()
1011 if (s->s_ttyp != NULL) { in sess_release()
1012 tty_lock(s->s_ttyp); in sess_release()
1013 tty_rel_sess(s->s_ttyp, s); in sess_release()
1015 proc_id_clear(PROC_ID_SESSION, s->s_sid); in sess_release()
1016 mtx_destroy(&s->s_mtx); in sess_release()
1028 p->p_pid, p, p->p_pptr == NULL ? -1 : p->p_pptr->p_pid, in db_print_pgrp_one()
1029 p->p_pgrp, (p->p_treeflag & P_TREE_GRPEXITED) != 0, in db_print_pgrp_one()
1030 p->p_pptr == NULL ? 0 : isjobproc(p->p_pptr, pgrp)); in db_print_pgrp_one()
1045 pgrp, (int)pgrp->pg_id, pgrp->pg_session, in DB_SHOW_COMMAND_FLAGS()
1046 pgrp->pg_session->s_count, in DB_SHOW_COMMAND_FLAGS()
1047 LIST_FIRST(&pgrp->pg_members)); in DB_SHOW_COMMAND_FLAGS()
1048 LIST_FOREACH(p, &pgrp->pg_members, p_pglist) in DB_SHOW_COMMAND_FLAGS()
1057 * Calculate the kinfo_proc members which contain process-wide
1068 kp->ki_estcpu = 0; in fill_kinfo_aggregate()
1069 kp->ki_pctcpu = 0; in fill_kinfo_aggregate()
1072 kp->ki_pctcpu += sched_pctcpu(td); in fill_kinfo_aggregate()
1073 kp->ki_estcpu += sched_estcpu(td); in fill_kinfo_aggregate()
1087 struct sigacts *ps; in fill_kinfo_proc_only() local
1092 kp->ki_structsize = sizeof(*kp); in fill_kinfo_proc_only()
1093 kp->ki_paddr = p; in fill_kinfo_proc_only()
1094 kp->ki_addr =/* p->p_addr; */0; /* XXX */ in fill_kinfo_proc_only()
1095 kp->ki_args = p->p_args; in fill_kinfo_proc_only()
1096 kp->ki_textvp = p->p_textvp; in fill_kinfo_proc_only()
1098 kp->ki_tracep = ktr_get_tracevp(p, false); in fill_kinfo_proc_only()
1099 kp->ki_traceflag = p->p_traceflag; in fill_kinfo_proc_only()
1101 kp->ki_fd = p->p_fd; in fill_kinfo_proc_only()
1102 kp->ki_pd = p->p_pd; in fill_kinfo_proc_only()
1103 kp->ki_vmspace = p->p_vmspace; in fill_kinfo_proc_only()
1104 kp->ki_flag = p->p_flag; in fill_kinfo_proc_only()
1105 kp->ki_flag2 = p->p_flag2; in fill_kinfo_proc_only()
1106 cred = p->p_ucred; in fill_kinfo_proc_only()
1108 kp->ki_uid = cred->cr_uid; in fill_kinfo_proc_only()
1109 kp->ki_ruid = cred->cr_ruid; in fill_kinfo_proc_only()
1110 kp->ki_svuid = cred->cr_svuid; in fill_kinfo_proc_only()
1111 kp->ki_cr_flags = 0; in fill_kinfo_proc_only()
1112 if (cred->cr_flags & CRED_FLAG_CAPMODE) in fill_kinfo_proc_only()
1113 kp->ki_cr_flags |= KI_CRF_CAPABILITY_MODE; in fill_kinfo_proc_only()
1115 if (1 + cred->cr_ngroups > KI_NGROUPS) { in fill_kinfo_proc_only()
1116 kp->ki_ngroups = KI_NGROUPS; in fill_kinfo_proc_only()
1117 kp->ki_cr_flags |= KI_CRF_GRP_OVERFLOW; in fill_kinfo_proc_only()
1119 kp->ki_ngroups = 1 + cred->cr_ngroups; in fill_kinfo_proc_only()
1120 kp->ki_groups[0] = cred->cr_gid; in fill_kinfo_proc_only()
1121 bcopy(cred->cr_groups, kp->ki_groups + 1, in fill_kinfo_proc_only()
1122 (kp->ki_ngroups - 1) * sizeof(gid_t)); in fill_kinfo_proc_only()
1123 kp->ki_rgid = cred->cr_rgid; in fill_kinfo_proc_only()
1124 kp->ki_svgid = cred->cr_svgid; in fill_kinfo_proc_only()
1127 kp->ki_flag |= P_JAILED; in fill_kinfo_proc_only()
1129 if (cred->cr_prison != curthread->td_ucred->cr_prison) in fill_kinfo_proc_only()
1130 kp->ki_jid = cred->cr_prison->pr_id; in fill_kinfo_proc_only()
1132 strlcpy(kp->ki_loginclass, cred->cr_loginclass->lc_name, in fill_kinfo_proc_only()
1133 sizeof(kp->ki_loginclass)); in fill_kinfo_proc_only()
1135 ps = p->p_sigacts; in fill_kinfo_proc_only()
1136 if (ps) { in fill_kinfo_proc_only()
1137 mtx_lock(&ps->ps_mtx); in fill_kinfo_proc_only()
1138 kp->ki_sigignore = ps->ps_sigignore; in fill_kinfo_proc_only()
1139 kp->ki_sigcatch = ps->ps_sigcatch; in fill_kinfo_proc_only()
1140 mtx_unlock(&ps->ps_mtx); in fill_kinfo_proc_only()
1142 if (p->p_state != PRS_NEW && in fill_kinfo_proc_only()
1143 p->p_state != PRS_ZOMBIE && in fill_kinfo_proc_only()
1144 p->p_vmspace != NULL) { in fill_kinfo_proc_only()
1145 struct vmspace *vm = p->p_vmspace; in fill_kinfo_proc_only()
1147 kp->ki_size = vm->vm_map.size; in fill_kinfo_proc_only()
1148 kp->ki_rssize = vmspace_resident_count(vm); /*XXX*/ in fill_kinfo_proc_only()
1150 kp->ki_rssize += td0->td_kstack_pages; in fill_kinfo_proc_only()
1151 kp->ki_swrss = vm->vm_swrss; in fill_kinfo_proc_only()
1152 kp->ki_tsize = vm->vm_tsize; in fill_kinfo_proc_only()
1153 kp->ki_dsize = vm->vm_dsize; in fill_kinfo_proc_only()
1154 kp->ki_ssize = vm->vm_ssize; in fill_kinfo_proc_only()
1155 } else if (p->p_state == PRS_ZOMBIE) in fill_kinfo_proc_only()
1156 kp->ki_stat = SZOMB; in fill_kinfo_proc_only()
1157 kp->ki_sflag = PS_INMEM; in fill_kinfo_proc_only()
1159 kp->ki_swtime = (ticks - p->p_swtick) / hz; in fill_kinfo_proc_only()
1160 kp->ki_pid = p->p_pid; in fill_kinfo_proc_only()
1161 kp->ki_nice = p->p_nice; in fill_kinfo_proc_only()
1162 kp->ki_fibnum = p->p_fibnum; in fill_kinfo_proc_only()
1163 kp->ki_start = p->p_stats->p_start; in fill_kinfo_proc_only()
1165 timevaladd(&kp->ki_start, &boottime); in fill_kinfo_proc_only()
1167 rufetch(p, &kp->ki_rusage); in fill_kinfo_proc_only()
1168 kp->ki_runtime = cputick2usec(p->p_rux.rux_runtime); in fill_kinfo_proc_only()
1169 calcru(p, &kp->ki_rusage.ru_utime, &kp->ki_rusage.ru_stime); in fill_kinfo_proc_only()
1171 calccru(p, &kp->ki_childutime, &kp->ki_childstime); in fill_kinfo_proc_only()
1173 kp->ki_childtime = kp->ki_childstime; in fill_kinfo_proc_only()
1174 timevaladd(&kp->ki_childtime, &kp->ki_childutime); in fill_kinfo_proc_only()
1177 kp->ki_cow += td0->td_cow; in fill_kinfo_proc_only()
1179 if (p->p_comm[0] != '\0') in fill_kinfo_proc_only()
1180 strlcpy(kp->ki_comm, p->p_comm, sizeof(kp->ki_comm)); in fill_kinfo_proc_only()
1181 if (p->p_sysent && p->p_sysent->sv_name != NULL && in fill_kinfo_proc_only()
1182 p->p_sysent->sv_name[0] != '\0') in fill_kinfo_proc_only()
1183 strlcpy(kp->ki_emul, p->p_sysent->sv_name, sizeof(kp->ki_emul)); in fill_kinfo_proc_only()
1184 kp->ki_siglist = p->p_siglist; in fill_kinfo_proc_only()
1185 kp->ki_xstat = KW_EXITCODE(p->p_xexit, p->p_xsig); in fill_kinfo_proc_only()
1186 kp->ki_acflag = p->p_acflag; in fill_kinfo_proc_only()
1187 kp->ki_lock = p->p_lock; in fill_kinfo_proc_only()
1188 if (p->p_pptr) { in fill_kinfo_proc_only()
1189 kp->ki_ppid = p->p_oppid; in fill_kinfo_proc_only()
1190 if (p->p_flag & P_TRACED) in fill_kinfo_proc_only()
1191 kp->ki_tracer = p->p_pptr->p_pid; in fill_kinfo_proc_only()
1196 * Fill job-related process information.
1208 pgrp = p->p_pgrp; in fill_kinfo_proc_pgrp()
1212 kp->ki_pgid = pgrp->pg_id; in fill_kinfo_proc_pgrp()
1213 kp->ki_jobc = pgrp_calc_jobc(pgrp); in fill_kinfo_proc_pgrp()
1215 sp = pgrp->pg_session; in fill_kinfo_proc_pgrp()
1219 kp->ki_sid = sp->s_sid; in fill_kinfo_proc_pgrp()
1221 strlcpy(kp->ki_login, sp->s_login, sizeof(kp->ki_login)); in fill_kinfo_proc_pgrp()
1222 if (sp->s_ttyvp) in fill_kinfo_proc_pgrp()
1223 kp->ki_kiflag |= KI_CTTY; in fill_kinfo_proc_pgrp()
1225 kp->ki_kiflag |= KI_SLEADER; in fill_kinfo_proc_pgrp()
1226 tp = sp->s_ttyp; in fill_kinfo_proc_pgrp()
1230 if ((p->p_flag & P_CONTROLT) && tp != NULL) { in fill_kinfo_proc_pgrp()
1231 kp->ki_tdev = tty_udev(tp); in fill_kinfo_proc_pgrp()
1232 kp->ki_tdev_freebsd11 = kp->ki_tdev; /* truncate */ in fill_kinfo_proc_pgrp()
1233 kp->ki_tpgid = tp->t_pgrp ? tp->t_pgrp->pg_id : NO_PID; in fill_kinfo_proc_pgrp()
1234 if (tp->t_session) in fill_kinfo_proc_pgrp()
1235 kp->ki_tsid = tp->t_session->s_sid; in fill_kinfo_proc_pgrp()
1237 kp->ki_tdev = NODEV; in fill_kinfo_proc_pgrp()
1238 kp->ki_tdev_freebsd11 = kp->ki_tdev; /* truncate */ in fill_kinfo_proc_pgrp()
1245 * process-related fields that are maintained for both threads and
1253 p = td->td_proc; in fill_kinfo_thread()
1254 kp->ki_tdaddr = td; in fill_kinfo_thread()
1260 if (td->td_wmesg != NULL) in fill_kinfo_thread()
1261 strlcpy(kp->ki_wmesg, td->td_wmesg, sizeof(kp->ki_wmesg)); in fill_kinfo_thread()
1263 bzero(kp->ki_wmesg, sizeof(kp->ki_wmesg)); in fill_kinfo_thread()
1264 if (strlcpy(kp->ki_tdname, td->td_name, sizeof(kp->ki_tdname)) >= in fill_kinfo_thread()
1265 sizeof(kp->ki_tdname)) { in fill_kinfo_thread()
1266 strlcpy(kp->ki_moretdname, in fill_kinfo_thread()
1267 td->td_name + sizeof(kp->ki_tdname) - 1, in fill_kinfo_thread()
1268 sizeof(kp->ki_moretdname)); in fill_kinfo_thread()
1270 bzero(kp->ki_moretdname, sizeof(kp->ki_moretdname)); in fill_kinfo_thread()
1273 kp->ki_kiflag |= KI_LOCKBLOCK; in fill_kinfo_thread()
1274 strlcpy(kp->ki_lockname, td->td_lockname, in fill_kinfo_thread()
1275 sizeof(kp->ki_lockname)); in fill_kinfo_thread()
1277 kp->ki_kiflag &= ~KI_LOCKBLOCK; in fill_kinfo_thread()
1278 bzero(kp->ki_lockname, sizeof(kp->ki_lockname)); in fill_kinfo_thread()
1281 if (p->p_state == PRS_NORMAL) { /* approximate. */ in fill_kinfo_thread()
1285 kp->ki_stat = SRUN; in fill_kinfo_thread()
1287 kp->ki_stat = SSTOP; in fill_kinfo_thread()
1289 kp->ki_stat = SSLEEP; in fill_kinfo_thread()
1291 kp->ki_stat = SLOCK; in fill_kinfo_thread()
1293 kp->ki_stat = SWAIT; in fill_kinfo_thread()
1295 } else if (p->p_state == PRS_ZOMBIE) { in fill_kinfo_thread()
1296 kp->ki_stat = SZOMB; in fill_kinfo_thread()
1298 kp->ki_stat = SIDL; in fill_kinfo_thread()
1302 kp->ki_wchan = td->td_wchan; in fill_kinfo_thread()
1303 kp->ki_pri.pri_level = td->td_priority; in fill_kinfo_thread()
1304 kp->ki_pri.pri_native = td->td_base_pri; in fill_kinfo_thread()
1310 if (td->td_lastcpu == NOCPU) in fill_kinfo_thread()
1311 kp->ki_lastcpu_old = NOCPU_OLD; in fill_kinfo_thread()
1312 else if (td->td_lastcpu > MAXCPU_OLD) in fill_kinfo_thread()
1313 kp->ki_lastcpu_old = MAXCPU_OLD; in fill_kinfo_thread()
1315 kp->ki_lastcpu_old = td->td_lastcpu; in fill_kinfo_thread()
1317 if (td->td_oncpu == NOCPU) in fill_kinfo_thread()
1318 kp->ki_oncpu_old = NOCPU_OLD; in fill_kinfo_thread()
1319 else if (td->td_oncpu > MAXCPU_OLD) in fill_kinfo_thread()
1320 kp->ki_oncpu_old = MAXCPU_OLD; in fill_kinfo_thread()
1322 kp->ki_oncpu_old = td->td_oncpu; in fill_kinfo_thread()
1324 kp->ki_lastcpu = td->td_lastcpu; in fill_kinfo_thread()
1325 kp->ki_oncpu = td->td_oncpu; in fill_kinfo_thread()
1326 kp->ki_tdflags = td->td_flags; in fill_kinfo_thread()
1327 kp->ki_tid = td->td_tid; in fill_kinfo_thread()
1328 kp->ki_numthreads = p->p_numthreads; in fill_kinfo_thread()
1329 kp->ki_pcb = td->td_pcb; in fill_kinfo_thread()
1330 kp->ki_kstack = (void *)td->td_kstack; in fill_kinfo_thread()
1331 kp->ki_slptime = (ticks - td->td_slptick) / hz; in fill_kinfo_thread()
1332 kp->ki_pri.pri_class = td->td_pri_class; in fill_kinfo_thread()
1333 kp->ki_pri.pri_user = td->td_user_pri; in fill_kinfo_thread()
1336 rufetchtd(td, &kp->ki_rusage); in fill_kinfo_thread()
1337 kp->ki_runtime = cputick2usec(td->td_rux.rux_runtime); in fill_kinfo_thread()
1338 kp->ki_pctcpu = sched_pctcpu(td); in fill_kinfo_thread()
1339 kp->ki_estcpu = sched_estcpu(td); in fill_kinfo_thread()
1340 kp->ki_cow = td->td_cow; in fill_kinfo_thread()
1343 /* We can't get this anymore but ps etc never used it anyway. */ in fill_kinfo_thread()
1344 kp->ki_rqindex = 0; in fill_kinfo_thread()
1347 kp->ki_siglist = td->td_siglist; in fill_kinfo_thread()
1348 kp->ki_sigmask = td->td_sigmask; in fill_kinfo_thread()
1353 if ((td->td_pflags & TDP2_UEXTERR) != 0) in fill_kinfo_thread()
1354 kp->ki_uerrmsg = td->td_exterr_ptr; in fill_kinfo_thread()
1388 bzero(&dst->pstat_startzero, in pstats_fork()
1390 bcopy(&src->pstat_startcopy, &dst->pstat_startcopy, in pstats_fork()
1395 pstats_free(struct pstats *ps) in pstats_free() argument
1398 free(ps, M_SUBPROC); in pstats_free()
1425 ki32->ki_structsize = sizeof(struct kinfo_proc32); in freebsd32_kinfo_proc_out()
1486 bcopy(ki->ki_tdname, ki32->ki_tdname, TDNAMLEN + 1); in freebsd32_kinfo_proc_out()
1487 bcopy(ki->ki_wmesg, ki32->ki_wmesg, WMESGLEN + 1); in freebsd32_kinfo_proc_out()
1488 bcopy(ki->ki_login, ki32->ki_login, LOGNAMELEN + 1); in freebsd32_kinfo_proc_out()
1489 bcopy(ki->ki_lockname, ki32->ki_lockname, LOCKNAMELEN + 1); in freebsd32_kinfo_proc_out()
1490 bcopy(ki->ki_comm, ki32->ki_comm, COMMLEN + 1); in freebsd32_kinfo_proc_out()
1491 bcopy(ki->ki_emul, ki32->ki_emul, KI_EMULNAMELEN + 1); in freebsd32_kinfo_proc_out()
1492 bcopy(ki->ki_loginclass, ki32->ki_loginclass, LOGINCLASSLEN + 1); in freebsd32_kinfo_proc_out()
1493 bcopy(ki->ki_moretdname, ki32->ki_moretdname, MAXCOMLEN - TDNAMLEN + 1); in freebsd32_kinfo_proc_out()
1502 freebsd32_rusage_out(&ki->ki_rusage, &ki32->ki_rusage); in freebsd32_kinfo_proc_out()
1503 freebsd32_rusage_out(&ki->ki_rusage_ch, &ki32->ki_rusage_ch); in freebsd32_kinfo_proc_out()
1531 size += sizeof(struct kinfo_proc32) * p->p_numthreads; in kern_proc_out_size()
1534 size += sizeof(struct kinfo_proc) * p->p_numthreads; in kern_proc_out_size()
1592 if (req->oldptr == NULL) in sysctl_out_proc()
1618 if (p->p_state == PRS_NEW) in proc_iterate()
1646 int *name = arg->name; in sysctl_kern_proc_iterate()
1647 int oid_number = arg->oid_number; in sysctl_kern_proc_iterate()
1648 int flags = arg->flags; in sysctl_kern_proc_iterate()
1649 struct sysctl_req *req = arg->req; in sysctl_kern_proc_iterate()
1654 KASSERT(p->p_ucred != NULL, in sysctl_kern_proc_iterate()
1655 ("process credential is NULL for non-NEW proc")); in sysctl_kern_proc_iterate()
1662 * TODO - make more efficient (see notes below). in sysctl_kern_proc_iterate()
1667 if (p->p_ucred->cr_gid != (gid_t)name[0]) in sysctl_kern_proc_iterate()
1673 if (p->p_pgrp == NULL || in sysctl_kern_proc_iterate()
1674 p->p_pgrp->pg_id != (pid_t)name[0]) in sysctl_kern_proc_iterate()
1679 if (p->p_ucred->cr_rgid != (gid_t)name[0]) in sysctl_kern_proc_iterate()
1684 if (p->p_session == NULL || in sysctl_kern_proc_iterate()
1685 p->p_session->s_sid != (pid_t)name[0]) in sysctl_kern_proc_iterate()
1690 if ((p->p_flag & P_CONTROLT) == 0 || in sysctl_kern_proc_iterate()
1691 p->p_session == NULL) in sysctl_kern_proc_iterate()
1694 SESS_LOCK(p->p_session); in sysctl_kern_proc_iterate()
1695 if (p->p_session->s_ttyp == NULL || in sysctl_kern_proc_iterate()
1696 tty_udev(p->p_session->s_ttyp) != in sysctl_kern_proc_iterate()
1698 SESS_UNLOCK(p->p_session); in sysctl_kern_proc_iterate()
1701 SESS_UNLOCK(p->p_session); in sysctl_kern_proc_iterate()
1705 if (p->p_ucred->cr_uid != (uid_t)name[0]) in sysctl_kern_proc_iterate()
1710 if (p->p_ucred->cr_ruid != (uid_t)name[0]) in sysctl_kern_proc_iterate()
1738 oid_number = oidp->oid_number; in sysctl_kern_proc()
1747 if (req->flags & SCTL_MASK32) in sysctl_kern_proc()
1779 if (req->oldptr == NULL) { in sysctl_kern_proc()
1804 refcount_init(&pa->ar_ref, 1); in pargs_alloc()
1805 pa->ar_length = len; in pargs_alloc()
1822 refcount_acquire(&pa->ar_ref); in pargs_hold()
1831 if (refcount_release(&pa->ar_ref)) in pargs_drop()
2058 len = nchr - done - 1; in get_ps_strings()
2130 if (pid == -1) { in sysctl_kern_proc_args()
2131 pid = p->p_pid; in sysctl_kern_proc_args()
2135 * If the query is for this process and it is single-threaded, there in sysctl_kern_proc_args()
2138 if (pid == p->p_pid && p->p_numthreads == 1 && req->newptr == NULL && in sysctl_kern_proc_args()
2139 (pa = p->p_args) != NULL) in sysctl_kern_proc_args()
2140 return (SYSCTL_OUT(req, pa->ar_args, pa->ar_length)); in sysctl_kern_proc_args()
2143 if (req->newptr != NULL) in sysctl_kern_proc_args()
2149 pa = p->p_args; in sysctl_kern_proc_args()
2153 error = SYSCTL_OUT(req, pa->ar_args, pa->ar_length); in sysctl_kern_proc_args()
2155 } else if ((p->p_flag & (P_WEXIT | P_SYSTEM)) == 0) { in sysctl_kern_proc_args()
2169 if (error != 0 || req->newptr == NULL) in sysctl_kern_proc_args()
2172 if (req->newlen > ps_arg_cache_limit - sizeof(struct pargs)) in sysctl_kern_proc_args()
2175 if (req->newlen == 0) { in sysctl_kern_proc_args()
2182 newpa = pargs_alloc(req->newlen); in sysctl_kern_proc_args()
2183 error = SYSCTL_IN(req, newpa->ar_args, req->newlen); in sysctl_kern_proc_args()
2190 pa = p->p_args; in sysctl_kern_proc_args()
2191 p->p_args = newpa; in sysctl_kern_proc_args()
2215 if ((p->p_flag & P_SYSTEM) != 0) { in sysctl_kern_proc_env()
2248 if ((p->p_flag & P_SYSTEM) != 0) { in sysctl_kern_proc_auxv()
2285 vp = p->p_textvp; in proc_get_binpath()
2293 dvp = p->p_textdvp; in proc_get_binpath()
2296 if (p->p_binname != NULL) in proc_get_binpath()
2297 strlcpy(binname, p->p_binname, MAXPATHLEN); in proc_get_binpath()
2349 if (*pidp == -1) { /* -1 means this process */ in sysctl_kern_proc_pathname()
2351 p = req->td->td_proc; in sysctl_kern_proc_pathname()
2384 sv_name = p->p_sysent->sv_name; in sysctl_kern_proc_sv_name()
2424 map = &vm->vm_map; in sysctl_kern_proc_ovmmap()
2430 if (entry->eflags & MAP_ENTRY_IS_SUB_MAP) in sysctl_kern_proc_ovmmap()
2434 kve->kve_structsize = sizeof(*kve); in sysctl_kern_proc_ovmmap()
2436 kve->kve_private_resident = 0; in sysctl_kern_proc_ovmmap()
2437 obj = entry->object.vm_object; in sysctl_kern_proc_ovmmap()
2440 if (obj->shadow_count == 1) in sysctl_kern_proc_ovmmap()
2441 kve->kve_private_resident = in sysctl_kern_proc_ovmmap()
2442 obj->resident_page_count; in sysctl_kern_proc_ovmmap()
2444 kve->kve_resident = 0; in sysctl_kern_proc_ovmmap()
2445 addr = entry->start; in sysctl_kern_proc_ovmmap()
2446 while (addr < entry->end) { in sysctl_kern_proc_ovmmap()
2447 if (pmap_extract(map->pmap, addr)) in sysctl_kern_proc_ovmmap()
2448 kve->kve_resident++; in sysctl_kern_proc_ovmmap()
2452 for (lobj = tobj = obj; tobj; tobj = tobj->backing_object) { in sysctl_kern_proc_ovmmap()
2455 kve->kve_offset += tobj->backing_object_offset; in sysctl_kern_proc_ovmmap()
2462 kve->kve_start = (void*)entry->start; in sysctl_kern_proc_ovmmap()
2463 kve->kve_end = (void*)entry->end; in sysctl_kern_proc_ovmmap()
2464 kve->kve_offset += (off_t)entry->offset; in sysctl_kern_proc_ovmmap()
2466 if (entry->protection & VM_PROT_READ) in sysctl_kern_proc_ovmmap()
2467 kve->kve_protection |= KVME_PROT_READ; in sysctl_kern_proc_ovmmap()
2468 if (entry->protection & VM_PROT_WRITE) in sysctl_kern_proc_ovmmap()
2469 kve->kve_protection |= KVME_PROT_WRITE; in sysctl_kern_proc_ovmmap()
2470 if (entry->protection & VM_PROT_EXECUTE) in sysctl_kern_proc_ovmmap()
2471 kve->kve_protection |= KVME_PROT_EXEC; in sysctl_kern_proc_ovmmap()
2473 if (entry->eflags & MAP_ENTRY_COW) in sysctl_kern_proc_ovmmap()
2474 kve->kve_flags |= KVME_FLAG_COW; in sysctl_kern_proc_ovmmap()
2475 if (entry->eflags & MAP_ENTRY_NEEDS_COPY) in sysctl_kern_proc_ovmmap()
2476 kve->kve_flags |= KVME_FLAG_NEEDS_COPY; in sysctl_kern_proc_ovmmap()
2477 if (entry->eflags & MAP_ENTRY_NOCOREDUMP) in sysctl_kern_proc_ovmmap()
2478 kve->kve_flags |= KVME_FLAG_NOCOREDUMP; in sysctl_kern_proc_ovmmap()
2480 last_timestamp = map->timestamp; in sysctl_kern_proc_ovmmap()
2483 kve->kve_fileid = 0; in sysctl_kern_proc_ovmmap()
2484 kve->kve_fsid = 0; in sysctl_kern_proc_ovmmap()
2488 kve->kve_type = vm_object_kvme_type(lobj, &vp); in sysctl_kern_proc_ovmmap()
2489 if (kve->kve_type == KVME_TYPE_MGTDEVICE) in sysctl_kern_proc_ovmmap()
2490 kve->kve_type = KVME_TYPE_UNKNOWN; in sysctl_kern_proc_ovmmap()
2496 kve->kve_ref_count = obj->ref_count; in sysctl_kern_proc_ovmmap()
2497 kve->kve_shadow_count = obj->shadow_count; in sysctl_kern_proc_ovmmap()
2501 cred = curthread->td_ucred; in sysctl_kern_proc_ovmmap()
2504 kve->kve_fileid = va.va_fileid; in sysctl_kern_proc_ovmmap()
2506 kve->kve_fsid = va.va_fsid; in sysctl_kern_proc_ovmmap()
2511 kve->kve_type = KVME_TYPE_NONE; in sysctl_kern_proc_ovmmap()
2512 kve->kve_ref_count = 0; in sysctl_kern_proc_ovmmap()
2513 kve->kve_shadow_count = 0; in sysctl_kern_proc_ovmmap()
2516 strlcpy(kve->kve_path, fullpath, sizeof(kve->kve_path)); in sysctl_kern_proc_ovmmap()
2524 if (last_timestamp != map->timestamp) { in sysctl_kern_proc_ovmmap()
2525 vm_map_lookup_entry(map, addr - 1, &tmp_entry); in sysctl_kern_proc_ovmmap()
2558 obj = entry->object.vm_object; in kern_proc_vmmap_resident()
2559 addr = entry->start; in kern_proc_vmmap_resident()
2561 pi = OFF_TO_IDX(entry->offset); in kern_proc_vmmap_resident()
2562 for (; addr < entry->end; addr += IDX_TO_OFF(pi_adv), pi += pi_adv) { in kern_proc_vmmap_resident()
2566 pi_adv = atop(entry->end - addr); in kern_proc_vmmap_resident()
2568 for (tobj = obj;; tobj = tobj->backing_object) { in kern_proc_vmmap_resident()
2569 m = vm_radix_lookup_ge(&tobj->rtree, pindex); in kern_proc_vmmap_resident()
2571 if (m->pindex == pindex) in kern_proc_vmmap_resident()
2573 if (pi_adv > m->pindex - pindex) { in kern_proc_vmmap_resident()
2574 pi_adv = m->pindex - pindex; in kern_proc_vmmap_resident()
2578 if (tobj->backing_object == NULL) in kern_proc_vmmap_resident()
2580 pindex += OFF_TO_IDX(tobj-> in kern_proc_vmmap_resident()
2585 if (m->psind != 0 && addr + pagesizes[1] <= entry->end && in kern_proc_vmmap_resident()
2586 (addr & (pagesizes[1] - 1)) == 0 && (incore = in kern_proc_vmmap_resident()
2587 pmap_mincore(map->pmap, addr, &pa) & MINCORE_SUPER) != 0) { in kern_proc_vmmap_resident()
2592 * rather than m->psind. in kern_proc_vmmap_resident()
2629 unsigned short seq; in kern_proc_vmmap_out() local
2644 map = &vm->vm_map; in kern_proc_vmmap_out()
2647 if (entry->eflags & MAP_ENTRY_IS_SUB_MAP) in kern_proc_vmmap_out()
2650 addr = entry->end; in kern_proc_vmmap_out()
2652 obj = entry->object.vm_object; in kern_proc_vmmap_out()
2654 if ((obj->flags & OBJ_ANON) != 0) in kern_proc_vmmap_out()
2655 kve->kve_obj = (uintptr_t)obj; in kern_proc_vmmap_out()
2658 tobj = tobj->backing_object) { in kern_proc_vmmap_out()
2660 kve->kve_offset += tobj->backing_object_offset; in kern_proc_vmmap_out()
2663 if (obj->backing_object == NULL) in kern_proc_vmmap_out()
2664 kve->kve_private_resident = in kern_proc_vmmap_out()
2665 obj->resident_page_count; in kern_proc_vmmap_out()
2667 &kve->kve_resident, &super); in kern_proc_vmmap_out()
2669 kve->kve_flags |= KVME_FLAG_SUPER; in kern_proc_vmmap_out()
2671 nobj = tobj->backing_object; in kern_proc_vmmap_out()
2679 kve->kve_start = entry->start; in kern_proc_vmmap_out()
2680 kve->kve_end = entry->end; in kern_proc_vmmap_out()
2681 kve->kve_offset += entry->offset; in kern_proc_vmmap_out()
2683 if (entry->protection & VM_PROT_READ) in kern_proc_vmmap_out()
2684 kve->kve_protection |= KVME_PROT_READ; in kern_proc_vmmap_out()
2685 if (entry->protection & VM_PROT_WRITE) in kern_proc_vmmap_out()
2686 kve->kve_protection |= KVME_PROT_WRITE; in kern_proc_vmmap_out()
2687 if (entry->protection & VM_PROT_EXECUTE) in kern_proc_vmmap_out()
2688 kve->kve_protection |= KVME_PROT_EXEC; in kern_proc_vmmap_out()
2689 if (entry->max_protection & VM_PROT_READ) in kern_proc_vmmap_out()
2690 kve->kve_protection |= KVME_MAX_PROT_READ; in kern_proc_vmmap_out()
2691 if (entry->max_protection & VM_PROT_WRITE) in kern_proc_vmmap_out()
2692 kve->kve_protection |= KVME_MAX_PROT_WRITE; in kern_proc_vmmap_out()
2693 if (entry->max_protection & VM_PROT_EXECUTE) in kern_proc_vmmap_out()
2694 kve->kve_protection |= KVME_MAX_PROT_EXEC; in kern_proc_vmmap_out()
2696 if (entry->eflags & MAP_ENTRY_COW) in kern_proc_vmmap_out()
2697 kve->kve_flags |= KVME_FLAG_COW; in kern_proc_vmmap_out()
2698 if (entry->eflags & MAP_ENTRY_NEEDS_COPY) in kern_proc_vmmap_out()
2699 kve->kve_flags |= KVME_FLAG_NEEDS_COPY; in kern_proc_vmmap_out()
2700 if (entry->eflags & MAP_ENTRY_NOCOREDUMP) in kern_proc_vmmap_out()
2701 kve->kve_flags |= KVME_FLAG_NOCOREDUMP; in kern_proc_vmmap_out()
2702 if (entry->eflags & MAP_ENTRY_GROWS_DOWN) in kern_proc_vmmap_out()
2703 kve->kve_flags |= KVME_FLAG_GROWS_DOWN; in kern_proc_vmmap_out()
2704 if (entry->eflags & MAP_ENTRY_USER_WIRED) in kern_proc_vmmap_out()
2705 kve->kve_flags |= KVME_FLAG_USER_WIRED; in kern_proc_vmmap_out()
2707 guard = (entry->eflags & MAP_ENTRY_GUARD) != 0; in kern_proc_vmmap_out()
2709 last_timestamp = map->timestamp; in kern_proc_vmmap_out()
2715 kve->kve_type = vm_object_kvme_type(lobj, &vp); in kern_proc_vmmap_out()
2721 kve->kve_ref_count = obj->ref_count; in kern_proc_vmmap_out()
2722 kve->kve_shadow_count = obj->shadow_count; in kern_proc_vmmap_out()
2723 if (obj->type == OBJT_DEVICE || in kern_proc_vmmap_out()
2724 obj->type == OBJT_MGTDEVICE) { in kern_proc_vmmap_out()
2725 cdev_pager_get_path(obj, kve->kve_path, in kern_proc_vmmap_out()
2726 sizeof(kve->kve_path)); in kern_proc_vmmap_out()
2729 if ((lobj->flags & OBJ_SYSVSHM) != 0) { in kern_proc_vmmap_out()
2730 kve->kve_flags |= KVME_FLAG_SYSVSHM; in kern_proc_vmmap_out()
2731 shmobjinfo(lobj, &key, &seq); in kern_proc_vmmap_out()
2732 kve->kve_vn_fileid = key; in kern_proc_vmmap_out()
2733 kve->kve_vn_fsid_freebsd11 = seq; in kern_proc_vmmap_out()
2735 if ((lobj->flags & OBJ_POSIXSHM) != 0) { in kern_proc_vmmap_out()
2736 kve->kve_flags |= KVME_FLAG_POSIXSHM; in kern_proc_vmmap_out()
2737 shm_get_path(lobj, kve->kve_path, in kern_proc_vmmap_out()
2738 sizeof(kve->kve_path)); in kern_proc_vmmap_out()
2742 kve->kve_vn_type = vntype_to_kinfo(vp->v_type); in kern_proc_vmmap_out()
2743 cred = curthread->td_ucred; in kern_proc_vmmap_out()
2746 kve->kve_vn_fileid = va.va_fileid; in kern_proc_vmmap_out()
2747 kve->kve_vn_fsid = va.va_fsid; in kern_proc_vmmap_out()
2748 kve->kve_vn_fsid_freebsd11 = in kern_proc_vmmap_out()
2749 kve->kve_vn_fsid; /* truncate */ in kern_proc_vmmap_out()
2750 kve->kve_vn_mode = in kern_proc_vmmap_out()
2752 kve->kve_vn_size = va.va_size; in kern_proc_vmmap_out()
2753 kve->kve_vn_rdev = va.va_rdev; in kern_proc_vmmap_out()
2754 kve->kve_vn_rdev_freebsd11 = in kern_proc_vmmap_out()
2755 kve->kve_vn_rdev; /* truncate */ in kern_proc_vmmap_out()
2756 kve->kve_status = KF_ATTR_VALID; in kern_proc_vmmap_out()
2759 strlcpy(kve->kve_path, fullpath, sizeof( in kern_proc_vmmap_out()
2760 kve->kve_path)); in kern_proc_vmmap_out()
2764 kve->kve_type = guard ? KVME_TYPE_GUARD : in kern_proc_vmmap_out()
2766 kve->kve_ref_count = 0; in kern_proc_vmmap_out()
2767 kve->kve_shadow_count = 0; in kern_proc_vmmap_out()
2772 kve->kve_structsize = in kern_proc_vmmap_out()
2774 strlen(kve->kve_path) + 1; in kern_proc_vmmap_out()
2776 kve->kve_structsize = sizeof(*kve); in kern_proc_vmmap_out()
2777 kve->kve_structsize = roundup(kve->kve_structsize, in kern_proc_vmmap_out()
2781 if (maxlen != -1 && maxlen < kve->kve_structsize) { in kern_proc_vmmap_out()
2785 } else if (maxlen != -1) in kern_proc_vmmap_out()
2786 maxlen -= kve->kve_structsize; in kern_proc_vmmap_out()
2788 if (sbuf_bcat(sb, kve, kve->kve_structsize) != 0) in kern_proc_vmmap_out()
2793 if (last_timestamp != map->timestamp) { in kern_proc_vmmap_out()
2794 vm_map_lookup_entry(map, addr - 1, &tmp_entry); in kern_proc_vmmap_out()
2825 error = kern_proc_vmmap_out(p, &sb, -1, KERN_VMMAP_PACK_KINFO); in sysctl_kern_proc_vmmap()
2863 numthreads = p->p_numthreads; in sysctl_kern_proc_kstack()
2868 } while (numthreads < p->p_numthreads); in sysctl_kern_proc_kstack()
2871 * XXXRW: During the below loop, execve(2) and countless other sorts in sysctl_kern_proc_kstack()
2883 lwpidarray[i] = td->td_tid; in sysctl_kern_proc_kstack()
2889 td = tdfind(lwpidarray[i], p->p_pid); in sysctl_kern_proc_kstack()
2894 (void)sbuf_new(&sb, kkstp->kkst_trace, in sysctl_kern_proc_kstack()
2895 sizeof(kkstp->kkst_trace), SBUF_FIXEDLEN); in sysctl_kern_proc_kstack()
2897 kkstp->kkst_tid = td->td_tid; in sysctl_kern_proc_kstack()
2899 kkstp->kkst_state = KKST_STATE_STACKOK; in sysctl_kern_proc_kstack()
2901 kkstp->kkst_state = KKST_STATE_RUNNING; in sysctl_kern_proc_kstack()
2935 if (*pidp == -1) { /* -1 means this process */ in sysctl_kern_proc_groups()
2936 p = req->td->td_proc; in sysctl_kern_proc_groups()
2944 cred = crhold(p->p_ucred); in sysctl_kern_proc_groups()
2947 error = SYSCTL_OUT(req, &cred->cr_gid, sizeof(gid_t)); in sysctl_kern_proc_groups()
2949 error = SYSCTL_OUT(req, cred->cr_groups, in sysctl_kern_proc_groups()
2950 cred->cr_ngroups * sizeof(gid_t)); in sysctl_kern_proc_groups()
2977 if (req->newptr != NULL && req->newlen != sizeof(rlim)) in sysctl_kern_proc_rlimit()
2981 if (req->newptr != NULL) in sysctl_kern_proc_rlimit()
2992 if (req->oldptr != NULL) { in sysctl_kern_proc_rlimit()
3004 if (req->newptr != NULL) { in sysctl_kern_proc_rlimit()
3038 if ((req->flags & SCTL_MASK32) != 0) { in sysctl_kern_proc_ps_strings()
3074 if (pid == p->p_pid || pid == 0) { in sysctl_kern_proc_umask()
3075 cmask = p->p_pd->pd_cmask; in sysctl_kern_proc_umask()
3083 cmask = p->p_pd->pd_cmask; in sysctl_kern_proc_umask()
3105 if (req->newptr != NULL && req->newlen != sizeof(osrel)) in sysctl_kern_proc_osrel()
3109 if (req->newptr != NULL) in sysctl_kern_proc_osrel()
3117 error = SYSCTL_OUT(req, &p->p_osrel, sizeof(p->p_osrel)); in sysctl_kern_proc_osrel()
3121 if (req->newptr != NULL) { in sysctl_kern_proc_osrel()
3129 p->p_osrel = osrel; in sysctl_kern_proc_osrel()
3155 sv = p->p_sysent; in sysctl_kern_proc_sigtramp()
3157 if ((req->flags & SCTL_MASK32) != 0) { in sysctl_kern_proc_sigtramp()
3163 ((sv->sv_flags & SV_DSO_SIG) == 0 ? in sysctl_kern_proc_sigtramp()
3164 *sv->sv_szsigcode : in sysctl_kern_proc_sigtramp()
3165 (uintptr_t)sv->sv_szsigcode); in sysctl_kern_proc_sigtramp()
3167 kst32.ksigtramp_start = PROC_PS_STRINGS(p) - in sysctl_kern_proc_sigtramp()
3168 *sv->sv_szsigcode; in sysctl_kern_proc_sigtramp()
3181 ((sv->sv_flags & SV_DSO_SIG) == 0 ? *sv->sv_szsigcode : in sysctl_kern_proc_sigtramp()
3182 (uintptr_t)sv->sv_szsigcode); in sysctl_kern_proc_sigtramp()
3184 kst.ksigtramp_start = (char *)PROC_PS_STRINGS(p) - in sysctl_kern_proc_sigtramp()
3185 *sv->sv_szsigcode; in sysctl_kern_proc_sigtramp()
3207 if (namelen != 1 || req->newptr != NULL) in sysctl_kern_proc_sigfastblk()
3228 if (td1->td_tid == pid) in sysctl_kern_proc_sigfastblk()
3238 * as no out-of-thin-air values are read from td_pflags, and in sysctl_kern_proc_sigfastblk()
3243 if ((td1->td_pflags & TDP_SIGFASTBLOCK) != 0) in sysctl_kern_proc_sigfastblk()
3244 addr = (uintptr_t)td1->td_sigblock_ptr; in sysctl_kern_proc_sigfastblk()
3291 kvm.kvm_min_user_addr = vm_map_min(&vmspace->vm_map); in sysctl_kern_proc_vm_layout()
3292 kvm.kvm_max_user_addr = vm_map_max(&vmspace->vm_map); in sysctl_kern_proc_vm_layout()
3293 kvm.kvm_text_addr = (uintptr_t)vmspace->vm_taddr; in sysctl_kern_proc_vm_layout()
3294 kvm.kvm_text_size = vmspace->vm_tsize; in sysctl_kern_proc_vm_layout()
3295 kvm.kvm_data_addr = (uintptr_t)vmspace->vm_daddr; in sysctl_kern_proc_vm_layout()
3296 kvm.kvm_data_size = vmspace->vm_dsize; in sysctl_kern_proc_vm_layout()
3297 kvm.kvm_stack_addr = (uintptr_t)vmspace->vm_maxsaddr; in sysctl_kern_proc_vm_layout()
3298 kvm.kvm_stack_size = vmspace->vm_ssize; in sysctl_kern_proc_vm_layout()
3299 kvm.kvm_shp_addr = vmspace->vm_shp_base; in sysctl_kern_proc_vm_layout()
3300 kvm.kvm_shp_size = p->p_sysent->sv_shared_page_len; in sysctl_kern_proc_vm_layout()
3301 if ((vmspace->vm_map.flags & MAP_WIREFUTURE) != 0) in sysctl_kern_proc_vm_layout()
3303 if ((vmspace->vm_map.flags & MAP_ASLR) != 0) in sysctl_kern_proc_vm_layout()
3305 if ((vmspace->vm_map.flags & MAP_ASLR_IGNSTART) != 0) in sysctl_kern_proc_vm_layout()
3307 if ((vmspace->vm_map.flags & MAP_WXORX) != 0) in sysctl_kern_proc_vm_layout()
3309 if ((vmspace->vm_map.flags & MAP_ASLR_STACK) != 0) in sysctl_kern_proc_vm_layout()
3311 if (vmspace->vm_shp_base != p->p_sysent->sv_shared_page_base && in sysctl_kern_proc_vm_layout()
3487 * must not be user-callable anyway.
3513 if ((p->p_flag & (P_KPROC | P_SYSTEM | P_TOTAL_STOP | in stop_all_proc()
3518 if ((p->p_flag2 & P2_WEXIT) != 0) { in stop_all_proc()
3535 if ((p->p_flag & P_TRACED) != 0) { in stop_all_proc()
3583 if ((p->p_flag & P_TOTAL_STOP) != 0) { in resume_all_proc()
3594 /* Did the loop above missed any stopped process ? */ in resume_all_proc()
3597 if ((p->p_flag & P_TOTAL_STOP) != 0) in resume_all_proc()
3618 if (error != 0 || req->newptr == NULL) in sysctl_debug_stop_all_proc()