On September 17, 2014 3:54:34 AM CEST, David Gwynne <da...@gwynne.id.au> wrote:
>not yet. we could make -1 toggle combine_cpu, or have something like -1
>and -N for combined and "N" cpus displayed?

If we want it, I'm in strong favor for the latter. Toggles are horrible, IMO. 
If we don't consider needing it, it might make sense not to compress the CPU 
list for non-interactive use.

/Alexander

>
>On 16 Sep 2014, at 11:08 pm, Alexander Hall <alexan...@beard.se> wrote:
>
>> 
>> 
>> On September 16, 2014 2:11:28 PM CEST, Mark Kettenis
><mark.kette...@xs4all.nl> wrote:
>>>> Date: Tue, 16 Sep 2014 21:51:00 +1000
>>>> From: David Gwynne <da...@gwynne.id.au>
>>>> 
>>>> if you have more than 8 cpus, combine the cpu lines by default.
>> 
>> Just curious, is there a command line argument to expand the list?
>> 
>> /Alexander
>> 
>>>> 
>>>> ok?
>>> 
>>> 8 seems a reasonable number
>>> 
>>> ok kettenis@
>>> 
>>>> Index: machine.c
>>>> ===================================================================
>>>> RCS file: /cvs/src/usr.bin/top/machine.c,v
>>>> retrieving revision 1.78
>>>> diff -u -p -r1.78 machine.c
>>>> --- machine.c      4 Jul 2014 05:58:31 -0000       1.78
>>>> +++ machine.c      16 Sep 2014 11:46:41 -0000
>>>> @@ -141,14 +141,26 @@ int          ncpu;
>>>> unsigned int       maxslp;
>>>> 
>>>> int
>>>> -machine_init(struct statics *statics)
>>>> +getncpu(void)
>>>> {
>>>> +  int mib[] = { CTL_HW, HW_NCPU };
>>>> +  int ncpu;
>>>>    size_t size = sizeof(ncpu);
>>>> -  int mib[2], pagesize, cpu;
>>>> 
>>>> -  mib[0] = CTL_HW;
>>>> -  mib[1] = HW_NCPU;
>>>> -  if (sysctl(mib, 2, &ncpu, &size, NULL, 0) == -1)
>>>> +  if (sysctl(mib, sizeof(mib) / sizeof(mib[0]),
>>>> +      &ncpu, &size, NULL, 0) == -1)
>>>> +          return (-1);
>>>> +
>>>> +  return (ncpu);
>>>> +}
>>>> +
>>>> +int
>>>> +machine_init(struct statics *statics)
>>>> +{
>>>> +  int pagesize, cpu;
>>>> +
>>>> +  ncpu = getncpu();
>>>> +  if (ncpu == -1)
>>>>            return (-1);
>>>>    cpu_states = calloc(ncpu, CPUSTATES * sizeof(int64_t));
>>>>    if (cpu_states == NULL)
>>>> Index: machine.h
>>>> ===================================================================
>>>> RCS file: /cvs/src/usr.bin/top/machine.h,v
>>>> retrieving revision 1.17
>>>> diff -u -p -r1.17 machine.h
>>>> --- machine.h      5 Jun 2012 18:52:53 -0000       1.17
>>>> +++ machine.h      16 Sep 2014 11:46:41 -0000
>>>> @@ -93,3 +93,5 @@ extern char    *format_next_process(cadd
>>>> extern uid_t    proc_owner(pid_t);
>>>> 
>>>> extern struct kinfo_proc   *getprocs(int, int, int *);
>>>> +
>>>> +int               getncpu(void);
>>>> Index: top.c
>>>> ===================================================================
>>>> RCS file: /cvs/src/usr.bin/top/top.c,v
>>>> retrieving revision 1.81
>>>> diff -u -p -r1.81 top.c
>>>> --- top.c  7 Apr 2014 15:49:22 -0000       1.81
>>>> +++ top.c  16 Sep 2014 11:46:41 -0000
>>>> @@ -250,6 +250,13 @@ parseargs(int ac, char **av)
>>>>            }
>>>>    }
>>>> 
>>>> +  i = getncpu();
>>>> +  if (i == -1)
>>>> +          err(1, NULL);
>>>> +
>>>> +  if (i > 8)
>>>> +          combine_cpus = 1;
>>>> +
>>>>    /* get count of top processes to display (if any) */
>>>>    if (optind < ac) {
>>>>            if ((topn = atoiwi(av[optind])) == Invalid) {
>>>> 
>>>> 
>> 

Reply via email to