Fri Apr 5 01:02:22 2013 UTC ()
add per cpu loads


(christos)
diff -r1.2 -r1.3 pkgsrc/net/net-snmp/patches/patch-agent_mibgroup_hardware_cpu_cpu__sysctl.c

cvs diff -r1.2 -r1.3 pkgsrc/net/net-snmp/patches/patch-agent_mibgroup_hardware_cpu_cpu__sysctl.c (expand / switch to context diff)
--- pkgsrc/net/net-snmp/patches/patch-agent_mibgroup_hardware_cpu_cpu__sysctl.c 2013/04/04 19:59:06 1.2
+++ pkgsrc/net/net-snmp/patches/patch-agent_mibgroup_hardware_cpu_cpu__sysctl.c 2013/04/05 01:02:22 1.3
@@ -1,7 +1,7 @@
-$NetBSD: patch-agent_mibgroup_hardware_cpu_cpu__sysctl.c,v 1.2 2013/04/04 19:59:06 christos Exp $
+$NetBSD: patch-agent_mibgroup_hardware_cpu_cpu__sysctl.c,v 1.3 2013/04/05 01:02:22 christos Exp $
 
---- agent/mibgroup/hardware/cpu/cpu_sysctl.c.orig	2012-10-09 18:28:58.000000000 -0400
-+++ agent/mibgroup/hardware/cpu/cpu_sysctl.c	2013-04-04 15:33:49.000000000 -0400
+--- agent/mibgrpu/hardware/cpu/cpu_sysctl.c.orig	2012-10-09 18:28:58.000000000 -0400
++++ agent/mibgrpu/hardware/cpu/cpu_sysctl.c	2013-04-04 20:55:47.000000000 -0400
 @@ -10,6 +10,7 @@
  
  #include <stdlib.h>
@@ -75,7 +75,36 @@
      cpu->nInterrupts  = (unsigned long long)mem_stats.NS_VM_INTR;
      cpu->nCtxSwitches = (unsigned long long)mem_stats.NS_VM_SWTCH;
      cpu->swapIn       = (unsigned long long)mem_stats.NS_VM_SWAPIN;
-@@ -205,7 +215,8 @@
+@@ -201,11 +211,37 @@
+ #ifdef NS_VM_PAGEOUT
+     cpu->pageOut      = (unsigned long long)mem_stats.NS_VM_PAGEOUT;
+ #endif
++#if defined(__NetBSD__)
++    {
++	NETSNMP_CPU_STATS *ncpu_stats;
++	size_t ncpu_size = sizeof(*ncpu_stats) * cpu_num * CPUSTATES;
++	ncpu_stats = malloc(ncpu_size);
++	int i;
++	if (ncpu_stats == NULL) {
++	    snmp_log(LOG_ERR, "no memory for kern.cp_time (errno %d)\n", errno);
++	    return;
++	}
++	if (sysctlbyname("kern.cp_time", ncpu_stats, &ncpu_size, NULL, 0) == -1)
++	    snmp_log(LOG_ERR, "sysctl kern.cp_time failed (errno %d)\n", errno);
++	for (i = 0; i < cpu_num; i++) {
++	    netsnmp_cpu_info  *ncpu = netsnmp_cpu_get_byIdx( i, 1 );
++	    size_t j = i * CPUSTATES;
++	    ncpu->user_ticks = (unsigned long long)ncpu_stats[j + CP_USER];
++	    ncpu->nice_ticks = (unsigned long long)ncpu_stats[j + CP_NICE];
++	    ncpu->sys2_ticks = (unsigned long long)ncpu_stats[j + CP_SYS]+cpu_stats[j + CP_INTR];
++	    ncpu->kern_ticks = (unsigned long long)ncpu_stats[j + CP_SYS];
++	    ncpu->idle_ticks = (unsigned long long)ncpu_stats[j + CP_IDLE];
++	    ncpu->intrpt_ticks = (unsigned long long)ncpu_stats[j + CP_INTR];
++	}
++	free(ncpu_stats);
++    }
++#endif
+ 
  #ifdef NETSNMP_KERN_MCPU
      mcpu_size  = cpu_num*sizeof(NETSNMP_KERN_MCPU_TYPE);
      mcpu_stats = malloc(mcpu_size);