Hello, I was using "top -H" to display all the different threads on my system. I then wanted to use cpuset to pin a thread to a particular core, however, I couldn't find the thread ID. So I've hacked top to display thread IDs. Hopefully this patch is useful to something, and perhaps it should be included with FreeBSD.
I'd be grateful for any feedback or suggestions. thanks Andrew
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,
_______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"