summaryrefslogtreecommitdiff
path: root/net/net-snmp/patches/patch-dm
diff options
context:
space:
mode:
Diffstat (limited to 'net/net-snmp/patches/patch-dm')
-rw-r--r--net/net-snmp/patches/patch-dm167
1 files changed, 167 insertions, 0 deletions
diff --git a/net/net-snmp/patches/patch-dm b/net/net-snmp/patches/patch-dm
new file mode 100644
index 00000000000..bb2dd87ec9e
--- /dev/null
+++ b/net/net-snmp/patches/patch-dm
@@ -0,0 +1,167 @@
+$NetBSD: patch-dm,v 1.1 2006/03/19 22:03:29 joerg Exp $
+
+--- agent/mibgroup/ucd-snmp/vmstat_freebsd2.c.orig 2004-06-29 12:14:32.000000000 +0000
++++ agent/mibgroup/ucd-snmp/vmstat_freebsd2.c
+@@ -9,9 +9,15 @@
+ */
+ #include <sys/param.h>
+ #include <sys/time.h>
++#if defined(dragonfly)
++#include <sys/user.h>
++#else
+ #include <sys/proc.h>
++#endif
+ #if defined(freebsd5) && __FreeBSD_version >= 500101
+ #include <sys/resource.h>
++#elif defined(dragonfly)
++#include <kinfo.h>
+ #else
+ #include <sys/dkstat.h>
+ #endif
+@@ -168,11 +174,18 @@ var_extensible_vmstat(struct variable *v
+ static time_t time_old;
+ static time_t time_diff;
+
++#if defined(dragonfly)
++ static struct kinfo_cputime cpu_old, cpu_new, cpu_diff;
++ static uint64_t cpu_total;
++ uint64_t cpu_sum;
++ static int pagesize;
++#else
+ static long cpu_old[CPUSTATES];
+ static long cpu_new[CPUSTATES];
+ static long cpu_diff[CPUSTATES];
+ static long cpu_total;
+ long cpu_sum;
++#endif
+ double cpu_prc;
+
+ static struct vmmeter mem_old, mem_new;
+@@ -180,6 +193,11 @@ var_extensible_vmstat(struct variable *v
+ static long long_ret;
+ static char errmsg[300];
+
++#if defined(dragonfly)
++ if (pagesize == 0)
++ pagesize = getpagesize() >> 10;
++#endif
++
+ long_ret = 0; /* set to 0 as default */
+
+ if (header_generic(vp, name, length, exact, var_len, write_method))
+@@ -195,15 +213,27 @@ var_extensible_vmstat(struct variable *v
+ /*
+ * CPU usage
+ */
+- auto_nlist(CPTIME_SYMBOL, (char *) cpu_new, sizeof(cpu_new));
++ cpu_total = 0;
+
+- cpu_total = 0;
++#if defined(dragonfly)
++ kinfo_get_sched_cputime(&cpu_new);
++#define CP_UPDATE(field) cpu_diff.field = cpu_new.field - cpu_old.field; cpu_total += cpu_diff.field;
++ CP_UPDATE(cp_user);
++ CP_UPDATE(cp_nice);
++ CP_UPDATE(cp_sys);
++ CP_UPDATE(cp_intr);
++ CP_UPDATE(cp_idle);
++ cpu_old = cpu_new;
++#undef CP_UPDATE
++#else
++ auto_nlist(CPTIME_SYMBOL, (char *) cpu_new, sizeof(cpu_new));
+
+ for (loop = 0; loop < CPUSTATES; loop++) {
+ cpu_diff[loop] = cpu_new[loop] - cpu_old[loop];
+ cpu_old[loop] = cpu_new[loop];
+ cpu_total += cpu_diff[loop];
+ }
++#endif
+
+ if (cpu_total == 0)
+ cpu_total = 1;
+@@ -223,7 +253,11 @@ var_extensible_vmstat(struct variable *v
+ /*
+ * Page-to-kb macro
+ */
++#if defined(dragonfly)
++#define ptok(p) ((p) * pagesize)
++#else
+ #define ptok(p) ((p) * (mem_new.v_page_size >> 10))
++#endif
+
+ switch (vp->magic) {
+ case MIBINDEX:
+@@ -270,37 +304,73 @@ var_extensible_vmstat(struct variable *v
+ long_ret = rate(mem_new.v_swtch - mem_old.v_swtch);
+ return ((u_char *) (&long_ret));
+ case CPUUSER:
++#if defined(dragonfly)
++ cpu_sum = cpu_diff.cp_user + cpu_diff.cp_nice;
++#else
+ cpu_sum = cpu_diff[CP_USER] + cpu_diff[CP_NICE];
++#endif
+ cpu_prc = (float) cpu_sum / (float) cpu_total;
+ long_ret = cpu_prc * CPU_PRC;
+ return ((u_char *) (&long_ret));
+ case CPUSYSTEM:
++#if defined(dragonfly)
++ cpu_sum = cpu_diff.cp_sys + cpu_diff.cp_intr;
++#else
+ cpu_sum = cpu_diff[CP_SYS] + cpu_diff[CP_INTR];
++#endif
+ cpu_prc = (float) cpu_sum / (float) cpu_total;
+ long_ret = cpu_prc * CPU_PRC;
+ return ((u_char *) (&long_ret));
+ case CPUIDLE:
++#if defined(dragonfly)
++ cpu_sum = cpu_diff.cp_idle;
++#else
+ cpu_sum = cpu_diff[CP_IDLE];
++#endif
+ cpu_prc = (float) cpu_sum / (float) cpu_total;
+ long_ret = cpu_prc * CPU_PRC;
+ return ((u_char *) (&long_ret));
+ case CPURAWUSER:
++#if defined(dragonfly)
++ cpu_sum = cpu_new.cp_user;
++#else
+ long_ret = cpu_new[CP_USER];
++#endif
+ return ((u_char *) (&long_ret));
+ case CPURAWNICE:
++#if defined(dragonfly)
++ cpu_sum = cpu_new.cp_nice;
++#else
+ long_ret = cpu_new[CP_NICE];
++#endif
+ return ((u_char *) (&long_ret));
+ case CPURAWSYSTEM:
++#if defined(dragonfly)
++ cpu_sum = cpu_new.cp_sys + cpu_new.cp_intr;
++#else
+ long_ret = cpu_new[CP_SYS] + cpu_new[CP_INTR];
++#endif
+ return ((u_char *) (&long_ret));
+ case CPURAWIDLE:
++#if defined(dragonfly)
++ cpu_sum = cpu_new.cp_idle;
++#else
+ long_ret = cpu_new[CP_IDLE];
++#endif
+ return ((u_char *) (&long_ret));
+ case CPURAWKERNEL:
++#if defined(dragonfly)
++ cpu_sum = cpu_new.cp_sys;
++#else
+ long_ret = cpu_new[CP_SYS];
++#endif
+ return ((u_char *) (&long_ret));
+ case CPURAWINTR:
++#if defined(dragonfly)
++ cpu_sum = cpu_new.cp_intr;
++#else
+ long_ret = cpu_new[CP_INTR];
++#endif
+ return ((u_char *) (&long_ret));
+ case SYSRAWINTERRUPTS:
+ long_ret = mem_new.v_intr;