Re: procstat(1) committed to CVS HEAD

From: Robert Watson <rwatson_at_FreeBSD.org>
Date: Mon, 3 Dec 2007 10:23:07 +0000 (GMT)
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?

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
> _at__at_ -82,8 +82,8 _at__at_ 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)
>
>
Received on Mon Dec 03 2007 - 09:23:16 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:23 UTC