aboutsummaryrefslogtreecommitdiff
path: root/sys/kern
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2020-07-02 10:40:47 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2020-07-02 10:40:47 +0000
commit4bc5ce2c74d772efe353633f59051e227f524bfa (patch)
tree461844d1b7d3b176f2be44343b850cba4afeb0e7 /sys/kern
parent771f100cebd8ada2bd764574386a71b5a5067f45 (diff)
downloadsrc-4bc5ce2c74d772efe353633f59051e227f524bfa.tar.gz
src-4bc5ce2c74d772efe353633f59051e227f524bfa.zip
Use tdfind() in pget().
Reviewed by: jhb, hselasky Sponsored by: Mellanox Technologies MFC after: 1 week Differential revision: https://reviews.freebsd.org/D25532
Notes
Notes: svn path=/head/; revision=362885
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/kern_proc.c29
1 files changed, 4 insertions, 25 deletions
diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c
index 12570e0b7b13..5dda1b76d539 100644
--- a/sys/kern/kern_proc.c
+++ b/sys/kern/kern_proc.c
@@ -455,30 +455,6 @@ pfind_any(pid_t pid)
return (_pfind(pid, true));
}
-static struct proc *
-pfind_tid(pid_t tid)
-{
- struct proc *p;
- struct thread *td;
-
- sx_slock(&allproc_lock);
- FOREACH_PROC_IN_SYSTEM(p) {
- PROC_LOCK(p);
- if (p->p_state == PRS_NEW) {
- PROC_UNLOCK(p);
- continue;
- }
- FOREACH_THREAD_IN_PROC(p, td) {
- if (td->td_tid == tid)
- goto found;
- }
- PROC_UNLOCK(p);
- }
-found:
- sx_sunlock(&allproc_lock);
- return (p);
-}
-
/*
* Locate a process group by number.
* The caller must hold proctree_lock.
@@ -506,6 +482,7 @@ int
pget(pid_t pid, int flags, struct proc **pp)
{
struct proc *p;
+ struct thread *td1;
int error;
p = curproc;
@@ -519,7 +496,9 @@ pget(pid_t pid, int flags, struct proc **pp)
else
p = pfind(pid);
} else if ((flags & PGET_NOTID) == 0) {
- p = pfind_tid(pid);
+ td1 = tdfind(pid, -1);
+ if (td1 != NULL)
+ p = td1->td_proc;
}
if (p == NULL)
return (ESRCH);