From 3ccc28b1eaff0fc4dd1800b8f1e19e29b18d8e30 Mon Sep 17 00:00:00 2001 From: emaste Date: Fri, 18 Jan 2008 18:57:27 +0000 Subject: [PATCH] Include the thread name (in addition to the proc name) in "info threads." --- gnu/usr.bin/gdb/kgdb/kthr.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/gnu/usr.bin/gdb/kgdb/kthr.c b/gnu/usr.bin/gdb/kgdb/kthr.c index 4c7f55656d1a..c11451573806 100644 --- a/gnu/usr.bin/gdb/kgdb/kthr.c +++ b/gnu/usr.bin/gdb/kgdb/kthr.c @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -204,17 +205,26 @@ kgdb_thr_select(struct kthr *kt) char * kgdb_thr_extra_thread_info(int tid) { + char comm[MAXCOMLEN + 1]; + char td_name[MAXCOMLEN + 1]; struct kthr *kt; struct proc *p; - static char comm[MAXCOMLEN + 1]; + struct thread *t; + static char info[MAXCOMLEN + 1 + MAXCOMLEN + 1]; kt = kgdb_thr_lookup_tid(tid); if (kt == NULL) return (NULL); p = (struct proc *)kt->paddr; + t = (struct thread *)kt->kaddr; if (kvm_read(kvm, (uintptr_t)&p->p_comm[0], &comm, sizeof(comm)) != sizeof(comm)) return (NULL); - - return (comm); + if (kvm_read(kvm, (uintptr_t)&t->td_name[0], &td_name, + sizeof(td_name)) == sizeof(td_name) && + strcmp(comm, td_name) != 0) + snprintf(info, sizeof(info), "%s/%s", comm, td_name); + else + strlcpy(info, comm, sizeof(info)); + return (info); }