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