aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/kern/subr_kdb.c16
-rw-r--r--sys/sys/kdb.h3
2 files changed, 17 insertions, 2 deletions
diff --git a/sys/kern/subr_kdb.c b/sys/kern/subr_kdb.c
index 0fc015eecc51..e2ea2770dcb1 100644
--- a/sys/kern/subr_kdb.c
+++ b/sys/kern/subr_kdb.c
@@ -316,7 +316,21 @@ kdb_thr_first(void)
}
struct thread *
-kdb_thr_lookup(pid_t tid)
+kdb_thr_from_pid(pid_t pid)
+{
+ struct proc *p;
+
+ p = LIST_FIRST(&allproc);
+ while (p != NULL) {
+ if (p->p_sflag & PS_INMEM && p->p_pid == pid)
+ return (FIRST_THREAD_IN_PROC(p));
+ p = LIST_NEXT(p, p_list);
+ }
+ return (NULL);
+}
+
+struct thread *
+kdb_thr_lookup(lwpid_t tid)
{
struct thread *thr;
diff --git a/sys/sys/kdb.h b/sys/sys/kdb.h
index 6a1b8f7d8f4c..55a88f42f86b 100644
--- a/sys/sys/kdb.h
+++ b/sys/sys/kdb.h
@@ -71,7 +71,8 @@ void * kdb_jmpbuf(jmp_buf);
void kdb_reenter(void);
struct pcb *kdb_thr_ctx(struct thread *);
struct thread *kdb_thr_first(void);
-struct thread *kdb_thr_lookup(pid_t);
+struct thread *kdb_thr_from_pid(pid_t);
+struct thread *kdb_thr_lookup(lwpid_t);
struct thread *kdb_thr_next(struct thread *);
int kdb_thr_select(struct thread *);
int kdb_trap(int, int, struct trapframe *);