Robert Watson wrote:

On Mon, 3 Dec 2007, Andrew Thompson wrote:

I would like to give some feedback. I listed the threads of proc 12 which
is intr,

# procstat -t 12
 PID    TID COMM                 CPU  PRI STATE   WCHAN
  12 100003 intr                   0   40 wait    -
  12 100004 intr                   0   52 wait    -
  12 100030 intr                   0   16 wait    -
  [...]
  12 100036 intr                   0   36 wait    -
  12 100037 intr                   0   24 wait    -

I had expected it to show the thread name such as 'irq14: ata0', is this possible (and a good thing to do)?

I just print out the 'comm' field returned by the generic sysctl, and I notice that top(1) with -S is now having the same problem as procstat(1). I think this is a kernel bug in how we initialize or otherwise handle thread names, and fairly recent, as it's not present on my 7.0BETA2 box. If I had to guess, it's that these are now 'true threads' under the single 'intr' proc, and that we're not exporting the thread name?

Changing to ki_ocomm gets the desired result for single and multithreaded processes.

I wonder if we should be renaming ki_ocomm to ki_tdcomm or ki_tdname?

we probably should now, originally there was still a used fo it somewhere
but I think it's probably been fixed by now (that was many years ago).


ki_tdname woudl be best.

or better still, make a scheme where we actually returned thread info separate from process info.


Robert N M Watson
Computer Laboratory
University of Cambridge



Andrew

Index: procstat_threads.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/procstat/procstat_threads.c,v
retrieving revision 1.1
diff -u -p -r1.1 procstat_threads.c
--- procstat_threads.c  2 Dec 2007 23:31:45 -0000       1.1
+++ procstat_threads.c  3 Dec 2007 06:06:46 -0000
@@ -82,8 +82,8 @@ procstat_threads(pid_t pid, struct kinfo
               kipp = &kip[i];
               printf("%5d ", pid);
               printf("%6d ", kipp->ki_tid);
-               printf("%-20s ", strlen(kipp->ki_comm) ?
-                   kipp->ki_comm : "-");
+               printf("%-20s ", strlen(kipp->ki_ocomm) ?
+                   kipp->ki_ocomm : "-");
               if (kipp->ki_oncpu != 255)
                       printf("%3d ", kipp->ki_oncpu);
               else if (kipp->ki_lastcpu != 255)


_______________________________________________
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to