aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/procstat/procstat.c
diff options
context:
space:
mode:
authorEric van Gyzen <vangyzen@FreeBSD.org>2016-12-07 15:04:22 +0000
committerEric van Gyzen <vangyzen@FreeBSD.org>2016-12-07 15:04:22 +0000
commit3d32d4a7c97401beb9eb1aaafbcb0389e50d9109 (patch)
tree43441ee7e43e93c264c40098bc6a268fa2fab93b /usr.bin/procstat/procstat.c
parent75747c209ced3c7e244c7249e8ecb667f6900ffb (diff)
downloadsrc-3d32d4a7c97401beb9eb1aaafbcb0389e50d9109.tar.gz
src-3d32d4a7c97401beb9eb1aaafbcb0389e50d9109.zip
Export the whole thread name in kinfo_proc
kinfo_proc::ki_tdname is three characters shorter than thread::td_name. Add a ki_moretdname field for these three extra characters. Add the new field to kinfo_proc32, as well. Update all in-tree consumers to read the new field and assemble the full name, except for lldb's HostThreadFreeBSD.cpp, which I will handle separately. Bump __FreeBSD_version. Reviewed by: kib MFC after: 1 week Relnotes: yes Sponsored by: Dell EMC Differential Revision: https://reviews.freebsd.org/D8722
Notes
Notes: svn path=/head/; revision=309676
Diffstat (limited to 'usr.bin/procstat/procstat.c')
-rw-r--r--usr.bin/procstat/procstat.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/usr.bin/procstat/procstat.c b/usr.bin/procstat/procstat.c
index cafb33525b27..0388ba01e6af 100644
--- a/usr.bin/procstat/procstat.c
+++ b/usr.bin/procstat/procstat.c
@@ -35,6 +35,7 @@
#include <libprocstat.h>
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <sysexits.h>
#include <unistd.h>
@@ -126,6 +127,21 @@ kinfo_proc_sort(struct kinfo_proc *kipp, int count)
qsort(kipp, count, sizeof(*kipp), kinfo_proc_compare);
}
+const char *
+kinfo_proc_thread_name(const struct kinfo_proc *kipp)
+{
+ static char name[MAXCOMLEN+1];
+
+ strlcpy(name, kipp->ki_tdname, sizeof(name));
+ strlcat(name, kipp->ki_moretdname, sizeof(name));
+ if (name[0] == '\0' || strcmp(kipp->ki_comm, name) == 0) {
+ name[0] = '-';
+ name[1] = '\0';
+ }
+
+ return (name);
+}
+
int
main(int argc, char *argv[])
{