version 1.86, 2018/06/22 14:22:06 |
version 1.87, 2018/09/26 17:23:13 |
|
|
static double etime; |
static double etime; |
static float hertz; |
static float hertz; |
static int nintr; |
static int nintr; |
|
static int ncpu; |
static long *intrloc; |
static long *intrloc; |
static char **intrname; |
static char **intrname; |
static int ipktsrow; |
static int ipktsrow; |
|
|
return (-1); |
return (-1); |
} |
} |
|
|
|
mib[0] = CTL_HW; |
|
mib[1] = HW_NCPU; |
|
size = sizeof(ncpu); |
|
if (sysctl(mib, 2, &ncpu, &size, NULL, 0) < 0) |
|
return (-1); |
|
|
allocinfo(&s); |
allocinfo(&s); |
allocinfo(&s1); |
allocinfo(&s1); |
allocinfo(&s2); |
allocinfo(&s2); |
|
|
static void |
static void |
getinfo(struct Info *si) |
getinfo(struct Info *si) |
{ |
{ |
static int cp_time_mib[] = { CTL_KERN, KERN_CPTIME }; |
static int cp_time2_mib[3] = { CTL_KERN, KERN_CPTIME2, 0 }; |
static int nchstats_mib[2] = { CTL_KERN, KERN_NCHSTATS }; |
static int nchstats_mib[2] = { CTL_KERN, KERN_NCHSTATS }; |
static int uvmexp_mib[2] = { CTL_VM, VM_UVMEXP }; |
static int uvmexp_mib[2] = { CTL_VM, VM_UVMEXP }; |
static int vmtotal_mib[2] = { CTL_VM, VM_METER }; |
static int vmtotal_mib[2] = { CTL_VM, VM_METER }; |
int mib[4], i; |
int mib[4], cpu, i; |
|
long cpu_time[CPUSTATES]; |
size_t size; |
size_t size; |
|
|
dkreadstats(); |
dkreadstats(); |
|
|
} |
} |
} |
} |
|
|
size = sizeof(si->time); |
memset(&si->time, 0, sizeof(si->time)); |
if (sysctl(cp_time_mib, 2, &si->time, &size, NULL, 0) < 0) { |
for (cpu = 0; cpu < ncpu; cpu++) { |
error("Can't get KERN_CPTIME: %s\n", strerror(errno)); |
cp_time2_mib[2] = cpu; |
memset(&si->time, 0, sizeof(si->time)); |
size = sizeof(cpu_time); |
|
if (sysctl(cp_time2_mib, 3, &cpu_time, &size, NULL, 0) < 0) { |
|
if (errno != ENODEV) { |
|
error("Can't get KERN_CPTIME2: %s\n", |
|
strerror(errno)); |
|
memset(&si->time, 0, sizeof(si->time)); |
|
break; |
|
} |
|
continue; /* ignore offline CPUs */ |
|
} |
|
for (i = 0; i < nitems(si->time); i++) |
|
si->time[i] += cpu_time[i]; |
} |
} |
|
|
size = sizeof(si->nchstats); |
size = sizeof(si->nchstats); |