diff options
-rw-r--r-- | sys/kern/subr_kdb.c | 16 | ||||
-rw-r--r-- | sys/sys/kdb.h | 3 |
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 *); |