Lines Matching refs:p

108 static void fill_kinfo_aggregate(struct proc *p, struct kinfo_proc *kp);
109 static void fill_kinfo_proc_only(struct proc *p, struct kinfo_proc *kp);
210 struct proc *p; in proc_ctor() local
213 p = (struct proc *)mem; in proc_ctor()
215 kdtrace_proc_ctor(p); in proc_ctor()
217 EVENTHANDLER_DIRECT_INVOKE(process_ctor, p); in proc_ctor()
218 td = FIRST_THREAD_IN_PROC(p); in proc_ctor()
232 struct proc *p; in proc_dtor() local
236 p = (struct proc *)mem; in proc_dtor()
237 td = FIRST_THREAD_IN_PROC(p); in proc_dtor()
240 KASSERT((p->p_numthreads == 1), in proc_dtor()
242 KASSERT(STAILQ_EMPTY(&p->p_ktr), ("proc_dtor: non-empty p_ktr")); in proc_dtor()
251 EVENTHANDLER_DIRECT_INVOKE(process_dtor, p); in proc_dtor()
253 kdtrace_proc_dtor(p); in proc_dtor()
255 if (p->p_ksi != NULL) in proc_dtor()
256 KASSERT(! KSI_ONQ(p->p_ksi), ("SIGCHLD queue")); in proc_dtor()
265 struct proc *p; in proc_init() local
267 p = (struct proc *)mem; in proc_init()
268 mtx_init(&p->p_mtx, "process lock", NULL, MTX_DEF | MTX_DUPOK | MTX_NEW); in proc_init()
269 mtx_init(&p->p_slock, "process slock", NULL, MTX_SPIN | MTX_NEW); in proc_init()
270 mtx_init(&p->p_statmtx, "pstatl", NULL, MTX_SPIN | MTX_NEW); in proc_init()
271 mtx_init(&p->p_itimmtx, "pitiml", NULL, MTX_SPIN | MTX_NEW); in proc_init()
272 mtx_init(&p->p_profmtx, "pprofl", NULL, MTX_SPIN | MTX_NEW); in proc_init()
273 cv_init(&p->p_pwait, "ppwait"); in proc_init()
274 TAILQ_INIT(&p->p_threads); /* all threads in proc */ in proc_init()
275 EVENTHANDLER_DIRECT_INVOKE(process_init, p); in proc_init()
276 p->p_stats = pstats_alloc(); in proc_init()
277 p->p_pgrp = NULL; in proc_init()
278 TAILQ_INIT(&p->p_kqtim_stop); in proc_init()
290 struct proc *p; in proc_fini() local
292 p = (struct proc *)mem; in proc_fini()
293 EVENTHANDLER_DIRECT_INVOKE(process_fini, p); in proc_fini()
294 pstats_free(p->p_stats); in proc_fini()
295 thread_free(FIRST_THREAD_IN_PROC(p)); in proc_fini()
296 mtx_destroy(&p->p_mtx); in proc_fini()
297 if (p->p_ksi != NULL) in proc_fini()
298 ksiginfo_free(p->p_ksi); in proc_fini()
375 inferior(struct proc *p) in inferior() argument
379 PROC_LOCK_ASSERT(p, MA_OWNED); in inferior()
380 for (; p != curproc; p = proc_realparent(p)) { in inferior()
381 if (p->p_pid == 0) in inferior()
417 struct proc *p; in pfind_any_locked() local
420 LIST_FOREACH(p, PIDHASH(pid), p_hash) { in pfind_any_locked()
421 if (p->p_pid == pid) { in pfind_any_locked()
422 PROC_LOCK(p); in pfind_any_locked()
423 if (p->p_state == PRS_NEW) { in pfind_any_locked()
424 PROC_UNLOCK(p); in pfind_any_locked()
425 p = NULL; in pfind_any_locked()
430 return (p); in pfind_any_locked()
442 struct proc *p; in _pfind() local
444 p = curproc; in _pfind()
445 if (p->p_pid == pid) { in _pfind()
446 PROC_LOCK(p); in _pfind()
447 return (p); in _pfind()
450 LIST_FOREACH(p, PIDHASH(pid), p_hash) { in _pfind()
451 if (p->p_pid == pid) { in _pfind()
452 PROC_LOCK(p); in _pfind()
453 if (p->p_state == PRS_NEW || in _pfind()
454 (!zombie && p->p_state == PRS_ZOMBIE)) { in _pfind()
455 PROC_UNLOCK(p); in _pfind()
456 p = NULL; in _pfind()
462 return (p); in _pfind()
508 struct proc *p; in pget() local
512 p = curproc; in pget()
513 if (p->p_pid == pid) { in pget()
514 PROC_LOCK(p); in pget()
516 p = NULL; in pget()
519 p = pfind_any(pid); in pget()
521 p = pfind(pid); in pget()
525 p = td1->td_proc; in pget()
527 if (p == NULL) in pget()
530 error = p_cansee(curthread, p); in pget()
536 error = p_candebug(curthread, p); in pget()
540 if ((flags & PGET_ISCURRENT) != 0 && curproc != p) { in pget()
544 if ((flags & PGET_NOTWEXIT) != 0 && (p->p_flag & P_WEXIT) != 0) { in pget()
548 if ((flags & PGET_NOTINEXEC) != 0 && (p->p_flag & P_INEXEC) != 0) { in pget()
557 _PHOLD(p); in pget()
558 PROC_UNLOCK(p); in pget()
560 *pp = p; in pget()
563 PROC_UNLOCK(p); in pget()
573 enterpgrp(struct proc *p, pid_t pgid, struct pgrp *pgrp, struct session *sess) in enterpgrp() argument
580 KASSERT(p->p_pid == pgid, in enterpgrp()
584 KASSERT(!SESS_LEADER(p), in enterpgrp()
587 old_pgrp = p->p_pgrp; in enterpgrp()
594 MPASS(old_pgrp == p->p_pgrp); in enterpgrp()
601 PROC_LOCK(p); in enterpgrp()
602 p->p_flag &= ~P_CONTROLT; in enterpgrp()
603 PROC_UNLOCK(p); in enterpgrp()
605 sess->s_leader = p; in enterpgrp()
606 sess->s_sid = p->p_pid; in enterpgrp()
607 proc_id_set(PROC_ID_SESSION, p->p_pid); in enterpgrp()
612 bcopy(p->p_session->s_login, sess->s_login, in enterpgrp()
615 KASSERT(p == curproc, in enterpgrp()
618 pgrp->pg_session = p->p_session; in enterpgrp()
623 proc_id_set(PROC_ID_GROUP, p->p_pid); in enterpgrp()
635 doenterpgrp(p, pgrp); in enterpgrp()
645 enterthispgrp(struct proc *p, struct pgrp *pgrp) in enterthispgrp() argument
650 PROC_LOCK_ASSERT(p, MA_NOTOWNED); in enterthispgrp()
652 PGRP_LOCK_ASSERT(p->p_pgrp, MA_NOTOWNED); in enterthispgrp()
653 SESS_LOCK_ASSERT(p->p_session, MA_NOTOWNED); in enterthispgrp()
654 KASSERT(pgrp->pg_session == p->p_session, in enterthispgrp()
656 __func__, pgrp->pg_session, p->p_session, p)); in enterthispgrp()
657 KASSERT(pgrp != p->p_pgrp, in enterthispgrp()
658 ("%s: p %p belongs to pgrp %p", __func__, p, pgrp)); in enterthispgrp()
660 old_pgrp = p->p_pgrp; in enterthispgrp()
667 MPASS(old_pgrp == p->p_pgrp); in enterthispgrp()
676 doenterpgrp(p, pgrp); in enterthispgrp()
697 jobc_reaper(struct proc *p) in jobc_reaper() argument
703 for (pp = p;;) { in jobc_reaper()
712 jobc_parent(struct proc *p, struct proc *p_exiting) in jobc_parent() argument
718 pp = proc_realparent(p); in jobc_parent()
751 doenterpgrp(struct proc *p, struct pgrp *pgrp) in doenterpgrp() argument
757 PROC_LOCK_ASSERT(p, MA_NOTOWNED); in doenterpgrp()
759 PGRP_LOCK_ASSERT(p->p_pgrp, MA_NOTOWNED); in doenterpgrp()
760 SESS_LOCK_ASSERT(p->p_session, MA_NOTOWNED); in doenterpgrp()
762 savepgrp = p->p_pgrp; in doenterpgrp()
763 pp = jobc_parent(p, NULL); in doenterpgrp()
769 PROC_LOCK(p); in doenterpgrp()
770 LIST_REMOVE(p, p_pglist); in doenterpgrp()
771 p->p_pgrp = pgrp; in doenterpgrp()
772 PROC_UNLOCK(p); in doenterpgrp()
773 LIST_INSERT_HEAD(&pgrp->pg_members, p, p_pglist); in doenterpgrp()
786 leavepgrp(struct proc *p) in leavepgrp() argument
791 savepgrp = p->p_pgrp; in leavepgrp()
793 PROC_LOCK(p); in leavepgrp()
794 LIST_REMOVE(p, p_pglist); in leavepgrp()
795 p->p_pgrp = NULL; in leavepgrp()
796 PROC_UNLOCK(p); in leavepgrp()
842 fixjobc_kill(struct proc *p) in fixjobc_kill() argument
848 PROC_LOCK_ASSERT(p, MA_NOTOWNED); in fixjobc_kill()
849 pgrp = p->p_pgrp; in fixjobc_kill()
858 MPASS((p->p_treeflag & P_TREE_GRPEXITED) == 0); in fixjobc_kill()
859 p->p_treeflag |= P_TREE_GRPEXITED; in fixjobc_kill()
864 pgrp = p->p_pgrp; in fixjobc_kill()
865 if (isjobproc(jobc_parent(p, NULL), pgrp)) { in fixjobc_kill()
876 LIST_FOREACH(q, &p->p_children, p_sibling) { in fixjobc_kill()
886 if (jobc_parent(q, p) == p && isjobproc(p, pgrp)) in fixjobc_kill()
892 LIST_FOREACH(q, &p->p_orphans, p_orphan) { in fixjobc_kill()
896 if (isjobproc(p, pgrp)) in fixjobc_kill()
909 struct proc *p; in killjobc() local
912 p = curproc; in killjobc()
913 MPASS(p->p_flag & P_WEXIT); in killjobc()
916 if (SESS_LEADER(p)) { in killjobc()
917 sp = p->p_session; in killjobc()
961 fixjobc_kill(p); in killjobc()
972 struct proc *p; in orphanpg() local
978 LIST_FOREACH(p, &pg->pg_members, p_pglist) { in orphanpg()
979 PROC_LOCK(p); in orphanpg()
980 if (P_SHOULDSTOP(p) == P_STOPPED_SIG) { in orphanpg()
981 PROC_UNLOCK(p); in orphanpg()
982 LIST_FOREACH(p, &pg->pg_members, p_pglist) { in orphanpg()
983 PROC_LOCK(p); in orphanpg()
984 kern_psignal(p, SIGHUP); in orphanpg()
985 kern_psignal(p, SIGCONT); in orphanpg()
986 PROC_UNLOCK(p); in orphanpg()
990 PROC_UNLOCK(p); in orphanpg()
1019 db_print_pgrp_one(struct pgrp *pgrp, struct proc *p) in db_print_pgrp_one() argument
1023 p->p_pid, p, p->p_pptr == NULL ? -1 : p->p_pptr->p_pid, in db_print_pgrp_one()
1024 p->p_pgrp, (p->p_treeflag & P_TREE_GRPEXITED) != 0, in db_print_pgrp_one()
1025 p->p_pptr == NULL ? 0 : isjobproc(p->p_pptr, pgrp)); in db_print_pgrp_one()
1031 struct proc *p; in DB_SHOW_COMMAND_FLAGS() local
1043 LIST_FOREACH(p, &pgrp->pg_members, p_pglist) in DB_SHOW_COMMAND_FLAGS()
1044 db_print_pgrp_one(pgrp, p); in DB_SHOW_COMMAND_FLAGS()
1057 fill_kinfo_aggregate(struct proc *p, struct kinfo_proc *kp) in fill_kinfo_aggregate() argument
1061 PROC_LOCK_ASSERT(p, MA_OWNED); in fill_kinfo_aggregate()
1065 FOREACH_THREAD_IN_PROC(p, td) { in fill_kinfo_aggregate()
1078 fill_kinfo_proc_only(struct proc *p, struct kinfo_proc *kp) in fill_kinfo_proc_only() argument
1085 PROC_LOCK_ASSERT(p, MA_OWNED); in fill_kinfo_proc_only()
1088 kp->ki_paddr = p; in fill_kinfo_proc_only()
1090 kp->ki_args = p->p_args; in fill_kinfo_proc_only()
1091 kp->ki_textvp = p->p_textvp; in fill_kinfo_proc_only()
1093 kp->ki_tracep = ktr_get_tracevp(p, false); in fill_kinfo_proc_only()
1094 kp->ki_traceflag = p->p_traceflag; in fill_kinfo_proc_only()
1096 kp->ki_fd = p->p_fd; in fill_kinfo_proc_only()
1097 kp->ki_pd = p->p_pd; in fill_kinfo_proc_only()
1098 kp->ki_vmspace = p->p_vmspace; in fill_kinfo_proc_only()
1099 kp->ki_flag = p->p_flag; in fill_kinfo_proc_only()
1100 kp->ki_flag2 = p->p_flag2; in fill_kinfo_proc_only()
1101 cred = p->p_ucred; in fill_kinfo_proc_only()
1129 ps = p->p_sigacts; in fill_kinfo_proc_only()
1136 if (p->p_state != PRS_NEW && in fill_kinfo_proc_only()
1137 p->p_state != PRS_ZOMBIE && in fill_kinfo_proc_only()
1138 p->p_vmspace != NULL) { in fill_kinfo_proc_only()
1139 struct vmspace *vm = p->p_vmspace; in fill_kinfo_proc_only()
1143 FOREACH_THREAD_IN_PROC(p, td0) { in fill_kinfo_proc_only()
1151 } else if (p->p_state == PRS_ZOMBIE) in fill_kinfo_proc_only()
1158 kp->ki_swtime = (ticks - p->p_swtick) / hz; in fill_kinfo_proc_only()
1159 kp->ki_pid = p->p_pid; in fill_kinfo_proc_only()
1160 kp->ki_nice = p->p_nice; in fill_kinfo_proc_only()
1161 kp->ki_fibnum = p->p_fibnum; in fill_kinfo_proc_only()
1162 kp->ki_start = p->p_stats->p_start; in fill_kinfo_proc_only()
1165 PROC_STATLOCK(p); in fill_kinfo_proc_only()
1166 rufetch(p, &kp->ki_rusage); in fill_kinfo_proc_only()
1167 kp->ki_runtime = cputick2usec(p->p_rux.rux_runtime); in fill_kinfo_proc_only()
1168 calcru(p, &kp->ki_rusage.ru_utime, &kp->ki_rusage.ru_stime); in fill_kinfo_proc_only()
1169 PROC_STATUNLOCK(p); in fill_kinfo_proc_only()
1170 calccru(p, &kp->ki_childutime, &kp->ki_childstime); in fill_kinfo_proc_only()
1175 FOREACH_THREAD_IN_PROC(p, td0) in fill_kinfo_proc_only()
1178 if (p->p_comm[0] != '\0') in fill_kinfo_proc_only()
1179 strlcpy(kp->ki_comm, p->p_comm, sizeof(kp->ki_comm)); in fill_kinfo_proc_only()
1180 if (p->p_sysent && p->p_sysent->sv_name != NULL && in fill_kinfo_proc_only()
1181 p->p_sysent->sv_name[0] != '\0') in fill_kinfo_proc_only()
1182 strlcpy(kp->ki_emul, p->p_sysent->sv_name, sizeof(kp->ki_emul)); in fill_kinfo_proc_only()
1183 kp->ki_siglist = p->p_siglist; in fill_kinfo_proc_only()
1184 kp->ki_xstat = KW_EXITCODE(p->p_xexit, p->p_xsig); in fill_kinfo_proc_only()
1185 kp->ki_acflag = p->p_acflag; in fill_kinfo_proc_only()
1186 kp->ki_lock = p->p_lock; in fill_kinfo_proc_only()
1187 if (p->p_pptr) { in fill_kinfo_proc_only()
1188 kp->ki_ppid = p->p_oppid; in fill_kinfo_proc_only()
1189 if (p->p_flag & P_TRACED) in fill_kinfo_proc_only()
1190 kp->ki_tracer = p->p_pptr->p_pid; in fill_kinfo_proc_only()
1198 fill_kinfo_proc_pgrp(struct proc *p, struct kinfo_proc *kp) in fill_kinfo_proc_pgrp() argument
1205 PROC_LOCK_ASSERT(p, MA_OWNED); in fill_kinfo_proc_pgrp()
1207 pgrp = p->p_pgrp; in fill_kinfo_proc_pgrp()
1223 if (SESS_LEADER(p)) in fill_kinfo_proc_pgrp()
1229 if ((p->p_flag & P_CONTROLT) && tp != NULL) { in fill_kinfo_proc_pgrp()
1250 struct proc *p; in fill_kinfo_thread() local
1252 p = td->td_proc; in fill_kinfo_thread()
1254 PROC_LOCK_ASSERT(p, MA_OWNED); in fill_kinfo_thread()
1257 PROC_STATLOCK(p); in fill_kinfo_thread()
1280 if (p->p_state == PRS_NORMAL) { /* approximate. */ in fill_kinfo_thread()
1285 } else if (P_SHOULDSTOP(p)) { in fill_kinfo_thread()
1294 } else if (p->p_state == PRS_ZOMBIE) { in fill_kinfo_thread()
1327 kp->ki_numthreads = p->p_numthreads; in fill_kinfo_thread()
1350 PROC_STATUNLOCK(p); in fill_kinfo_thread()
1358 fill_kinfo_proc(struct proc *p, struct kinfo_proc *kp) in fill_kinfo_proc() argument
1360 MPASS(FIRST_THREAD_IN_PROC(p) != NULL); in fill_kinfo_proc()
1364 fill_kinfo_proc_pgrp(p,kp); in fill_kinfo_proc()
1365 fill_kinfo_proc_only(p, kp); in fill_kinfo_proc()
1366 fill_kinfo_thread(FIRST_THREAD_IN_PROC(p), kp, 0); in fill_kinfo_proc()
1367 fill_kinfo_aggregate(p, kp); in fill_kinfo_proc()
1510 kern_proc_out_size(struct proc *p, int flags) in kern_proc_out_size() argument
1514 PROC_LOCK_ASSERT(p, MA_OWNED); in kern_proc_out_size()
1526 size += sizeof(struct kinfo_proc32) * p->p_numthreads; in kern_proc_out_size()
1529 size += sizeof(struct kinfo_proc) * p->p_numthreads; in kern_proc_out_size()
1531 PROC_UNLOCK(p); in kern_proc_out_size()
1536 kern_proc_out(struct proc *p, struct sbuf *sb, int flags) in kern_proc_out() argument
1545 PROC_LOCK_ASSERT(p, MA_OWNED); in kern_proc_out()
1546 MPASS(FIRST_THREAD_IN_PROC(p) != NULL); in kern_proc_out()
1549 fill_kinfo_proc(p, &ki); in kern_proc_out()
1561 FOREACH_THREAD_IN_PROC(p, td) { in kern_proc_out()
1576 PROC_UNLOCK(p); in kern_proc_out()
1581 sysctl_out_proc(struct proc *p, struct sysctl_req *req, int flags) in sysctl_out_proc() argument
1588 return (SYSCTL_OUT(req, 0, kern_proc_out_size(p, flags))); in sysctl_out_proc()
1592 error = kern_proc_out(p, &sb, flags); in sysctl_out_proc()
1605 struct proc *p; in proc_iterate() local
1612 LIST_FOREACH(p, &pidhashtbl[j], p_hash) { in proc_iterate()
1613 if (p->p_state == PRS_NEW) in proc_iterate()
1615 error = cb(p, cbarg); in proc_iterate()
1616 PROC_LOCK_ASSERT(p, MA_NOTOWNED); in proc_iterate()
1638 sysctl_kern_proc_iterate(struct proc *p, void *origarg) in sysctl_kern_proc_iterate() argument
1647 PROC_LOCK(p); in sysctl_kern_proc_iterate()
1649 KASSERT(p->p_ucred != NULL, in sysctl_kern_proc_iterate()
1654 if (p_cansee(curthread, p)) in sysctl_kern_proc_iterate()
1662 if (p->p_ucred->cr_gid != (gid_t)name[0]) in sysctl_kern_proc_iterate()
1668 if (p->p_pgrp == NULL || in sysctl_kern_proc_iterate()
1669 p->p_pgrp->pg_id != (pid_t)name[0]) in sysctl_kern_proc_iterate()
1674 if (p->p_ucred->cr_rgid != (gid_t)name[0]) in sysctl_kern_proc_iterate()
1679 if (p->p_session == NULL || in sysctl_kern_proc_iterate()
1680 p->p_session->s_sid != (pid_t)name[0]) in sysctl_kern_proc_iterate()
1685 if ((p->p_flag & P_CONTROLT) == 0 || in sysctl_kern_proc_iterate()
1686 p->p_session == NULL) in sysctl_kern_proc_iterate()
1689 SESS_LOCK(p->p_session); in sysctl_kern_proc_iterate()
1690 if (p->p_session->s_ttyp == NULL || in sysctl_kern_proc_iterate()
1691 tty_udev(p->p_session->s_ttyp) != in sysctl_kern_proc_iterate()
1693 SESS_UNLOCK(p->p_session); in sysctl_kern_proc_iterate()
1696 SESS_UNLOCK(p->p_session); in sysctl_kern_proc_iterate()
1700 if (p->p_ucred->cr_uid != (uid_t)name[0]) in sysctl_kern_proc_iterate()
1705 if (p->p_ucred->cr_ruid != (uid_t)name[0]) in sysctl_kern_proc_iterate()
1715 error = sysctl_out_proc(p, req, flags); in sysctl_kern_proc_iterate()
1716 PROC_LOCK_ASSERT(p, MA_NOTOWNED); in sysctl_kern_proc_iterate()
1719 PROC_UNLOCK(p); in sysctl_kern_proc_iterate()
1729 struct proc *p; in sysctl_kern_proc() local
1752 error = pget((pid_t)name[0], PGET_CANSEE, &p); in sysctl_kern_proc()
1754 error = sysctl_out_proc(p, req, flags); in sysctl_kern_proc()
1831 proc_read_string(struct thread *td, struct proc *p, const char *sptr, char *buf, in proc_read_string() argument
1841 n = proc_readmem(td, p, (vm_offset_t)sptr, buf, len); in proc_read_string()
1857 get_proc_vector32(struct thread *td, struct proc *p, char ***proc_vectorp, in get_proc_vector32() argument
1869 if (proc_readmem(td, p, PROC_PS_STRINGS(p), &pss, sizeof(pss)) != in get_proc_vector32()
1893 if (proc_readmem(td, p, ptr, &aux, sizeof(aux)) != in get_proc_vector32()
1910 if (proc_readmem(td, p, vptr, proc_vector32, size) != size) { in get_proc_vector32()
1931 get_proc_vector(struct thread *td, struct proc *p, char ***proc_vectorp, in get_proc_vector() argument
1942 if (SV_PROC_FLAG(p, SV_ILP32) != 0) in get_proc_vector()
1943 return (get_proc_vector32(td, p, proc_vectorp, vsizep, type)); in get_proc_vector()
1945 if (proc_readmem(td, p, PROC_PS_STRINGS(p), &pss, sizeof(pss)) != in get_proc_vector()
1984 if (proc_readmem(td, p, ptr, &aux, sizeof(aux)) != in get_proc_vector()
2007 if (proc_readmem(td, p, vptr, proc_vector, size) != size) { in get_proc_vector()
2020 get_ps_strings(struct thread *td, struct proc *p, struct sbuf *sb, in get_ps_strings() argument
2028 PROC_ASSERT_HELD(p); in get_ps_strings()
2035 error = get_proc_vector(td, p, &proc_vector, &vsize, type); in get_ps_strings()
2047 error = proc_read_string(td, p, sptr, pss_string, in get_ps_strings()
2068 proc_getargv(struct thread *td, struct proc *p, struct sbuf *sb) in proc_getargv() argument
2071 return (get_ps_strings(curthread, p, sb, PROC_ARG)); in proc_getargv()
2075 proc_getenvv(struct thread *td, struct proc *p, struct sbuf *sb) in proc_getenvv() argument
2078 return (get_ps_strings(curthread, p, sb, PROC_ENV)); in proc_getenvv()
2082 proc_getauxv(struct thread *td, struct proc *p, struct sbuf *sb) in proc_getauxv() argument
2088 error = get_proc_vector(td, p, &auxv, &vsize, PROC_AUX); in proc_getauxv()
2091 if (SV_PROC_FLAG(p, SV_ILP32) != 0) in proc_getauxv()
2115 struct proc *p; in sysctl_kern_proc_args() local
2123 p = curproc; in sysctl_kern_proc_args()
2126 pid = p->p_pid; in sysctl_kern_proc_args()
2133 if (pid == p->p_pid && p->p_numthreads == 1 && req->newptr == NULL && in sysctl_kern_proc_args()
2134 (pa = p->p_args) != NULL) in sysctl_kern_proc_args()
2140 error = pget(pid, flags, &p); in sysctl_kern_proc_args()
2144 pa = p->p_args; in sysctl_kern_proc_args()
2147 PROC_UNLOCK(p); in sysctl_kern_proc_args()
2150 } else if ((p->p_flag & (P_WEXIT | P_SYSTEM)) == 0) { in sysctl_kern_proc_args()
2151 _PHOLD(p); in sysctl_kern_proc_args()
2152 PROC_UNLOCK(p); in sysctl_kern_proc_args()
2155 error = proc_getargv(curthread, p, &sb); in sysctl_kern_proc_args()
2157 PRELE(p); in sysctl_kern_proc_args()
2162 PROC_UNLOCK(p); in sysctl_kern_proc_args()
2184 PROC_LOCK(p); in sysctl_kern_proc_args()
2185 pa = p->p_args; in sysctl_kern_proc_args()
2186 p->p_args = newpa; in sysctl_kern_proc_args()
2187 PROC_UNLOCK(p); in sysctl_kern_proc_args()
2200 struct proc *p; in sysctl_kern_proc_env() local
2207 error = pget((pid_t)name[0], PGET_WANTREAD, &p); in sysctl_kern_proc_env()
2210 if ((p->p_flag & P_SYSTEM) != 0) { in sysctl_kern_proc_env()
2211 PRELE(p); in sysctl_kern_proc_env()
2217 error = proc_getenvv(curthread, p, &sb); in sysctl_kern_proc_env()
2219 PRELE(p); in sysctl_kern_proc_env()
2233 struct proc *p; in sysctl_kern_proc_auxv() local
2240 error = pget((pid_t)name[0], PGET_WANTREAD, &p); in sysctl_kern_proc_auxv()
2243 if ((p->p_flag & P_SYSTEM) != 0) { in sysctl_kern_proc_auxv()
2244 PRELE(p); in sysctl_kern_proc_auxv()
2249 error = proc_getauxv(curthread, p, &sb); in sysctl_kern_proc_auxv()
2251 PRELE(p); in sysctl_kern_proc_auxv()
2269 proc_get_binpath(struct proc *p, char *binname, char **retbuf, in proc_get_binpath() argument
2278 PROC_LOCK_ASSERT(p, MA_OWNED); in proc_get_binpath()
2280 vp = p->p_textvp; in proc_get_binpath()
2282 PROC_UNLOCK(p); in proc_get_binpath()
2288 dvp = p->p_textdvp; in proc_get_binpath()
2291 if (p->p_binname != NULL) in proc_get_binpath()
2292 strlcpy(binname, p->p_binname, MAXPATHLEN); in proc_get_binpath()
2293 PROC_UNLOCK(p); in proc_get_binpath()
2336 struct proc *p; in sysctl_kern_proc_pathname() local
2346 p = req->td->td_proc; in sysctl_kern_proc_pathname()
2347 PROC_LOCK(p); in sysctl_kern_proc_pathname()
2349 error = pget(*pidp, PGET_CANSEE, &p); in sysctl_kern_proc_pathname()
2353 error = proc_get_binpath(p, binname, &retbuf, &freebuf); in sysctl_kern_proc_pathname()
2365 struct proc *p; in sysctl_kern_proc_sv_name() local
2376 error = pget((pid_t)name[0], PGET_CANSEE, &p); in sysctl_kern_proc_sv_name()
2379 sv_name = p->p_sysent->sv_name; in sysctl_kern_proc_sv_name()
2380 PROC_UNLOCK(p); in sysctl_kern_proc_sv_name()
2400 struct proc *p; in sysctl_kern_proc_ovmmap() local
2409 error = pget((pid_t)name[0], PGET_WANTREAD, &p); in sysctl_kern_proc_ovmmap()
2412 vm = vmspace_acquire_ref(p); in sysctl_kern_proc_ovmmap()
2414 PRELE(p); in sysctl_kern_proc_ovmmap()
2526 PRELE(p); in sysctl_kern_proc_ovmmap()
2603 kern_proc_vmmap_out(struct proc *p, struct sbuf *sb, ssize_t maxlen, int flags) in kern_proc_vmmap_out() argument
2619 PROC_LOCK_ASSERT(p, MA_OWNED); in kern_proc_vmmap_out()
2621 _PHOLD(p); in kern_proc_vmmap_out()
2622 PROC_UNLOCK(p); in kern_proc_vmmap_out()
2623 vm = vmspace_acquire_ref(p); in kern_proc_vmmap_out()
2625 PRELE(p); in kern_proc_vmmap_out()
2768 PRELE(p); in kern_proc_vmmap_out()
2776 struct proc *p; in sysctl_kern_proc_vmmap() local
2788 error = pget((pid_t)name[0], PGET_CANDEBUG | PGET_NOTWEXIT, &p); in sysctl_kern_proc_vmmap()
2793 error = kern_proc_vmmap_out(p, &sb, -1, KERN_VMMAP_PACK_KINFO); in sysctl_kern_proc_vmmap()
2809 struct proc *p; in sysctl_kern_proc_kstack() local
2817 error = pget((pid_t)name[0], PGET_NOTINEXEC | PGET_WANTREAD, &p); in sysctl_kern_proc_kstack()
2825 PROC_LOCK(p); in sysctl_kern_proc_kstack()
2831 numthreads = p->p_numthreads; in sysctl_kern_proc_kstack()
2832 PROC_UNLOCK(p); in sysctl_kern_proc_kstack()
2835 PROC_LOCK(p); in sysctl_kern_proc_kstack()
2836 } while (numthreads < p->p_numthreads); in sysctl_kern_proc_kstack()
2848 FOREACH_THREAD_IN_PROC(p, td) { in sysctl_kern_proc_kstack()
2854 PROC_UNLOCK(p); in sysctl_kern_proc_kstack()
2857 td = tdfind(lwpidarray[i], p->p_pid); in sysctl_kern_proc_kstack()
2873 PROC_UNLOCK(p); in sysctl_kern_proc_kstack()
2881 PRELE(p); in sysctl_kern_proc_kstack()
2899 struct proc *p; in sysctl_kern_proc_groups() local
2906 p = req->td->td_proc; in sysctl_kern_proc_groups()
2907 PROC_LOCK(p); in sysctl_kern_proc_groups()
2909 error = pget(*pidp, PGET_CANSEE, &p); in sysctl_kern_proc_groups()
2914 cred = crhold(p->p_ucred); in sysctl_kern_proc_groups()
2915 PROC_UNLOCK(p); in sysctl_kern_proc_groups()
2933 struct proc *p; in sysctl_kern_proc_rlimit() local
2952 error = pget((pid_t)name[0], flags, &p); in sysctl_kern_proc_rlimit()
2960 PROC_LOCK(p); in sysctl_kern_proc_rlimit()
2961 lim_rlimit_proc(p, which, &rlim); in sysctl_kern_proc_rlimit()
2962 PROC_UNLOCK(p); in sysctl_kern_proc_rlimit()
2974 error = kern_proc_setrlimit(curthread, p, which, &rlim); in sysctl_kern_proc_rlimit()
2978 PRELE(p); in sysctl_kern_proc_rlimit()
2991 struct proc *p; in sysctl_kern_proc_ps_strings() local
3001 error = pget((pid_t)name[0], PGET_CANDEBUG, &p); in sysctl_kern_proc_ps_strings()
3010 ps_strings32 = SV_PROC_FLAG(p, SV_ILP32) != 0 ? in sysctl_kern_proc_ps_strings()
3011 PTROUT(PROC_PS_STRINGS(p)) : 0; in sysctl_kern_proc_ps_strings()
3012 PROC_UNLOCK(p); in sysctl_kern_proc_ps_strings()
3017 ps_strings = PROC_PS_STRINGS(p); in sysctl_kern_proc_ps_strings()
3018 PROC_UNLOCK(p); in sysctl_kern_proc_ps_strings()
3031 struct proc *p; in sysctl_kern_proc_umask() local
3040 p = curproc; in sysctl_kern_proc_umask()
3041 if (pid == p->p_pid || pid == 0) { in sysctl_kern_proc_umask()
3042 cmask = p->p_pd->pd_cmask; in sysctl_kern_proc_umask()
3046 error = pget(pid, PGET_WANTREAD, &p); in sysctl_kern_proc_umask()
3050 cmask = p->p_pd->pd_cmask; in sysctl_kern_proc_umask()
3051 PRELE(p); in sysctl_kern_proc_umask()
3066 struct proc *p; in sysctl_kern_proc_osrel() local
3080 error = pget((pid_t)name[0], flags, &p); in sysctl_kern_proc_osrel()
3084 error = SYSCTL_OUT(req, &p->p_osrel, sizeof(p->p_osrel)); in sysctl_kern_proc_osrel()
3096 p->p_osrel = osrel; in sysctl_kern_proc_osrel()
3099 PRELE(p); in sysctl_kern_proc_osrel()
3108 struct proc *p; in sysctl_kern_proc_sigtramp() local
3119 error = pget((pid_t)name[0], PGET_CANDEBUG, &p); in sysctl_kern_proc_sigtramp()
3122 sv = p->p_sysent; in sysctl_kern_proc_sigtramp()
3126 if (SV_PROC_FLAG(p, SV_ILP32)) { in sysctl_kern_proc_sigtramp()
3127 if (PROC_HAS_SHP(p)) { in sysctl_kern_proc_sigtramp()
3128 kst32.ksigtramp_start = PROC_SIGCODE(p); in sysctl_kern_proc_sigtramp()
3134 kst32.ksigtramp_start = PROC_PS_STRINGS(p) - in sysctl_kern_proc_sigtramp()
3136 kst32.ksigtramp_end = PROC_PS_STRINGS(p); in sysctl_kern_proc_sigtramp()
3139 PROC_UNLOCK(p); in sysctl_kern_proc_sigtramp()
3145 if (PROC_HAS_SHP(p)) { in sysctl_kern_proc_sigtramp()
3146 kst.ksigtramp_start = (char *)PROC_SIGCODE(p); in sysctl_kern_proc_sigtramp()
3151 kst.ksigtramp_start = (char *)PROC_PS_STRINGS(p) - in sysctl_kern_proc_sigtramp()
3153 kst.ksigtramp_end = (char *)PROC_PS_STRINGS(p); in sysctl_kern_proc_sigtramp()
3155 PROC_UNLOCK(p); in sysctl_kern_proc_sigtramp()
3166 struct proc *p; in sysctl_kern_proc_sigfastblk() local
3178 error = pget(pid, PGET_HOLD | PGET_NOTWEXIT | PGET_CANDEBUG, &p); in sysctl_kern_proc_sigfastblk()
3182 PROC_LOCK(p); in sysctl_kern_proc_sigfastblk()
3185 if (!SV_PROC_FLAG(p, SV_ILP32)) { in sysctl_kern_proc_sigfastblk()
3192 td1 = FIRST_THREAD_IN_PROC(p); in sysctl_kern_proc_sigfastblk()
3194 FOREACH_THREAD_IN_PROC(p, td1) { in sysctl_kern_proc_sigfastblk()
3216 _PRELE(p); in sysctl_kern_proc_sigfastblk()
3217 PROC_UNLOCK(p); in sysctl_kern_proc_sigfastblk()
3235 struct proc *p; in sysctl_kern_proc_vm_layout() local
3243 error = pget((pid_t)name[0], PGET_CANDEBUG, &p); in sysctl_kern_proc_vm_layout()
3248 if (!SV_PROC_FLAG(p, SV_ILP32)) { in sysctl_kern_proc_vm_layout()
3249 PROC_UNLOCK(p); in sysctl_kern_proc_vm_layout()
3254 vmspace = vmspace_acquire_ref(p); in sysctl_kern_proc_vm_layout()
3255 PROC_UNLOCK(p); in sysctl_kern_proc_vm_layout()
3267 kvm.kvm_shp_size = p->p_sysent->sv_shared_page_len; in sysctl_kern_proc_vm_layout()
3278 if (vmspace->vm_shp_base != p->p_sysent->sv_shared_page_base && in sysctl_kern_proc_vm_layout()
3279 PROC_HAS_SHP(p)) in sysctl_kern_proc_vm_layout()
3459 struct proc *cp, *p; in stop_all_proc() local
3474 p = LIST_NEXT(cp, p_list); in stop_all_proc()
3475 if (p == NULL) in stop_all_proc()
3478 LIST_INSERT_AFTER(p, cp, p_list); in stop_all_proc()
3479 PROC_LOCK(p); in stop_all_proc()
3480 if ((p->p_flag & (P_KPROC | P_SYSTEM | P_TOTAL_STOP | in stop_all_proc()
3482 PROC_UNLOCK(p); in stop_all_proc()
3485 if ((p->p_flag2 & P2_WEXIT) != 0) { in stop_all_proc()
3487 PROC_UNLOCK(p); in stop_all_proc()
3490 if (P_SHOULDSTOP(p) == P_STOPPED_SINGLE) { in stop_all_proc()
3499 PROC_UNLOCK(p); in stop_all_proc()
3502 if ((p->p_flag & P_TRACED) != 0) { in stop_all_proc()
3509 PROC_UNLOCK(p); in stop_all_proc()
3513 _PHOLD(p); in stop_all_proc()
3514 r = thread_single(p, SINGLE_ALLPROC); in stop_all_proc()
3519 _PRELE(p); in stop_all_proc()
3520 PROC_UNLOCK(p); in stop_all_proc()
3536 struct proc *cp, *p; in resume_all_proc() local
3544 p = LIST_NEXT(cp, p_list); in resume_all_proc()
3545 if (p == NULL) in resume_all_proc()
3548 LIST_INSERT_AFTER(p, cp, p_list); in resume_all_proc()
3549 PROC_LOCK(p); in resume_all_proc()
3550 if ((p->p_flag & P_TOTAL_STOP) != 0) { in resume_all_proc()
3552 _PHOLD(p); in resume_all_proc()
3553 thread_single_end(p, SINGLE_ALLPROC); in resume_all_proc()
3554 _PRELE(p); in resume_all_proc()
3555 PROC_UNLOCK(p); in resume_all_proc()
3558 PROC_UNLOCK(p); in resume_all_proc()
3562 FOREACH_PROC_IN_SYSTEM(p) { in resume_all_proc()
3564 if ((p->p_flag & P_TOTAL_STOP) != 0) in resume_all_proc()