Date: Wed, 7 Oct 2009 09:59:21 GMT From: Andrew Brampton <brampton@gmail.com> To: freebsd-gnats-submit@FreeBSD.org Subject: bin/139389: [patch] Change top(1) to display thread IDs Message-ID: <200910070959.n979xLJc002957@www.freebsd.org> Resent-Message-ID: <200910071000.n97A0FZ9095499@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 139389 >Category: bin >Synopsis: [patch] Change top(1) to display thread IDs >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Wed Oct 07 10:00:15 UTC 2009 >Closed-Date: >Last-Modified: >Originator: Andrew Brampton >Release: FreeBSD 8.0-RC1 >Organization: >Environment: FreeBSD machine 8.0-RC1 FreeBSD 8.0-RC1 #25 r197611M: Tue Sep 29 12:21:18 BST 2009 root@machine:/usr/obj/usr/src/sys/CUSTOM amd64 >Description: The program top(1) does not display thread IDs when listing threads (in "-H" mode). Displaying the thread ID can be very useful when using the tool cpuset, as this takes a thread ID as an argument. The attached patch adds a new column after PID which displays the Thread ID. >How-To-Repeat: >Fix: Patch attached with submission follows: Index: usr.bin/top/machine.c =================================================================== --- usr.bin/top/machine.c (revision 197611) +++ usr.bin/top/machine.c (working copy) @@ -108,18 +108,18 @@ static char smp_header_thr[] = " PID%s %-*.*s THR PRI NICE SIZE RES STATE C TIME %6s COMMAND"; static char smp_header[] = - " PID%s %-*.*s " "PRI NICE SIZE RES STATE C TIME %6s COMMAND"; + " PID TID%s %-*.*s PRI NICE SIZE RES STATE C TIME %6s COMMAND"; #define smp_Proc_format \ - "%5d%s %-*.*s %s%3d %4s%7s %6s %-6.6s %2d%7s %5.2f%% %.*s" + "%5d%s%s %-*.*s %s%3d %4s%7s %6s %-6.6s %2d%7s %5.2f%% %.*s" static char up_header_thr[] = " PID%s %-*.*s THR PRI NICE SIZE RES STATE TIME %6s COMMAND"; static char up_header[] = - " PID%s %-*.*s " "PRI NICE SIZE RES STATE TIME %6s COMMAND"; + " PID TID%s %-*.*s PRI NICE SIZE RES STATE TIME %6s COMMAND"; #define up_Proc_format \ - "%5d%s %-*.*s %s%3d %4s%7s %6s %-6.6s%.0d%7s %5.2f%% %.*s" + "%5d%s%s %-*.*s %s%3d %4s%7s %6s %-6.6s%.0d%7s %5.2f%% %.*s" /* process state names for the "STATE" column of the display */ @@ -757,7 +757,7 @@ int state; struct rusage ru, *rup; long p_tot, s_tot; - char *proc_fmt, thr_buf[6], jid_buf[6]; + char *proc_fmt, tid_buf[8], thr_buf[6], jid_buf[6]; char *cmdbuf = NULL; char **args; @@ -942,14 +942,19 @@ /* format this entry */ proc_fmt = smpmode ? smp_Proc_format : up_Proc_format; - if (ps.thread != 0) + if (ps.thread) { thr_buf[0] = '\0'; - else + snprintf(tid_buf, sizeof(tid_buf), "%*d", + sizeof(tid_buf) - 1, pp->ki_tid); + } else { + tid_buf[0] = '\0'; snprintf(thr_buf, sizeof(thr_buf), "%*d ", sizeof(thr_buf) - 2, pp->ki_numthreads); + } sprintf(fmt, proc_fmt, pp->ki_pid, + tid_buf, jid_buf, namelength, namelength, (*get_userid)(pp->ki_ruid), thr_buf, >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200910070959.n979xLJc002957>