]> arthur.barton.de Git - netdata.git/commitdiff
Minor cleanups and plugin structure changes
authorVladimir Kobal <vlad@prokk.net>
Mon, 5 Dec 2016 20:10:59 +0000 (22:10 +0200)
committerVladimir Kobal <vlad@prokk.net>
Mon, 5 Dec 2016 20:10:59 +0000 (22:10 +0200)
configure.ac
src/Makefile.am
src/common.c
src/common.h
src/freebsd_loadavg.c [deleted file]
src/freebsd_stat.c [deleted file]
src/freebsd_sysctl.c [new file with mode: 0644]
src/main.c
src/plugin_freebsd.c
src/plugin_freebsd.h

index 11ab91701bf420208f9f18f5567fb27c7cc96f68..9b26fcddcc584bcb7f788e6a63672206fd45af6a 100644 (file)
@@ -41,7 +41,7 @@ case "$host_os" in
 freebsd*)
        build_target=freebsd
        ;;
-*)     
+*)
        ;;
 esac
 
index baecba22990c012756289471df857f6f4171a863..466c699354313764e396b7367955df0b7c475aba 100644 (file)
@@ -62,8 +62,7 @@ netdata_SOURCES = \
 if FREEBSD
 netdata_SOURCES += \
        plugin_freebsd.c plugin_freebsd.h \
-       freebsd_loadavg.c \
-       freebsd_stat.c \
+       freebsd_sysctl.c \
        $(NULL)
 else
 netdata_SOURCES += \
@@ -91,7 +90,6 @@ netdata_SOURCES += \
        $(NULL)
 endif
 
-
 netdata_LDADD = \
        $(OPTIONAL_MATH_LIBS) \
        $(OPTIONAL_NFACCT_LIBS) \
index 29669d9309ea06412694db6b1d46fcb73523b7d9..98093b965cd4e70a8a62eb28a44abe4f473b20ee 100644 (file)
@@ -1,9 +1,8 @@
 #include "common.h"
 
-#ifdef __FreeBSD__ 
-#    include <sys/thr.h> 
-#    define O_NOATIME     0 
-#    define MADV_DONTFORK INHERIT_NONE 
+#ifdef __FreeBSD__
+#    define O_NOATIME     0
+#    define MADV_DONTFORK INHERIT_NONE
 #endif /* __FreeBSD__ */
 
 char *global_host_prefix = "";
@@ -1031,11 +1030,9 @@ int fd_is_valid(int fd) {
 }
 
 pid_t gettid(void) {
-#ifdef __FreeBSD__ 
-        long pid; 
-        thr_self( &pid ); 
-        return (unsigned) pid; 
-#else /* __FreeBSD__ */
+#ifdef __FreeBSD__
+    return (pid_t)pthread_getthreadid_np();
+#else
     return (pid_t)syscall(SYS_gettid);
 #endif /* __FreeBSD__ */
 }
index b1b984479f973500a0234f9bc158ac4fb5916ddd..a6f185bc0da80949584f20c8c49c32c66f2cd82c 100644 (file)
 #include <signal.h>
 #include <syslog.h>
 #include <sys/mman.h>
-
 #ifndef __FreeBSD__
 #include <sys/prctl.h>
 #endif /* __FreeBSD__ */
-
 #include <sys/resource.h>
 #include <sys/socket.h>
 #include <sys/stat.h>
diff --git a/src/freebsd_loadavg.c b/src/freebsd_loadavg.c
deleted file mode 100644 (file)
index d4e3594..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-#include "common.h"
-#include <sys/vmmeter.h>
-
-// FreeBSD calculates this once every 5 seconds
-#define MIN_LOADAVG_UPDATE_EVERY 5
-
-int do_proc_loadavg(int update_every, unsigned long long dt) {
-    (void)dt;
-
-    static int do_loadavg = -1, do_all_processes = -1;
-    static unsigned long long last_loadavg_usec = 0;
-    static RRDSET *load_chart = NULL, *processes_chart = NULL;
-
-    if(unlikely(do_loadavg == -1)) {
-        do_loadavg          = config_get_boolean("plugin:proc:/proc/loadavg", "enable load average", 1);
-        do_all_processes    = config_get_boolean("plugin:proc:/proc/loadavg", "enable total processes", 1);
-    }
-
-    struct loadavg sysload;
-    
-    if (unlikely(GETSYSCTL("vm.loadavg", sysload)))
-        return 1;
-    
-    double load1 = (double)sysload.ldavg[0] / sysload.fscale;
-    double load5 = (double)sysload.ldavg[1] / sysload.fscale;
-    double load15 = (double)sysload.ldavg[2] / sysload.fscale;
-
-    struct vmtotal total;
-    
-    if (unlikely(GETSYSCTL("vm.vmtotal", total)))
-        return 1;
-    
-    unsigned long long active_processes     = total.t_rq + total.t_dw + total.t_pw + total.t_sl + total.t_sw;
-
-    // --------------------------------------------------------------------
-
-    if(last_loadavg_usec <= dt) {
-        if(likely(do_loadavg)) {
-            if(unlikely(!load_chart)) {
-                load_chart = rrdset_find_byname("system.load");
-                if(unlikely(!load_chart)) {
-                    load_chart = rrdset_create("system", "load", NULL, "load", NULL, "System Load Average", "load", 100, (update_every < MIN_LOADAVG_UPDATE_EVERY) ? MIN_LOADAVG_UPDATE_EVERY : update_every, RRDSET_TYPE_LINE);
-                    rrddim_add(load_chart, "load1", NULL, 1, 1000, RRDDIM_ABSOLUTE);
-                    rrddim_add(load_chart, "load5", NULL, 1, 1000, RRDDIM_ABSOLUTE);
-                    rrddim_add(load_chart, "load15", NULL, 1, 1000, RRDDIM_ABSOLUTE);
-                }
-            }
-            else
-                rrdset_next(load_chart);
-
-            rrddim_set(load_chart, "load1", (collected_number) (load1 * 1000));
-            rrddim_set(load_chart, "load5", (collected_number) (load5 * 1000));
-            rrddim_set(load_chart, "load15", (collected_number) (load15 * 1000));
-            rrdset_done(load_chart);
-        }
-
-        last_loadavg_usec = load_chart->update_every * 1000000ULL;
-    }
-    else last_loadavg_usec -= dt;
-
-    // --------------------------------------------------------------------
-
-    if(likely(do_all_processes)) {
-        if(unlikely(!processes_chart)) {
-            processes_chart = rrdset_find_byname("system.active_processes");
-            if(unlikely(!processes_chart)) {
-                processes_chart = rrdset_create("system", "active_processes", NULL, "processes", NULL, "System Active Processes", "processes", 750, update_every, RRDSET_TYPE_LINE);
-                rrddim_add(processes_chart, "active", NULL, 1, 1, RRDDIM_ABSOLUTE);
-            }
-        }
-        else rrdset_next(processes_chart);
-
-        rrddim_set(processes_chart, "active", active_processes);
-        rrdset_done(processes_chart);
-    }
-
-    return 0;
-}
diff --git a/src/freebsd_stat.c b/src/freebsd_stat.c
deleted file mode 100644 (file)
index 1ed513c..0000000
+++ /dev/null
@@ -1,254 +0,0 @@
-#include "common.h"
-#include <sys/vmmeter.h>
-
-int do_proc_stat(int update_every, unsigned long long dt) {
-    (void)dt;
-
-    static int do_cpu = -1, do_cpu_cores = -1, do_interrupts = -1, do_context = -1, do_forks = -1, do_processes = -1;
-
-    if(unlikely(do_cpu == -1)) {
-        do_cpu          = config_get_boolean("plugin:proc:/proc/stat", "cpu utilization", 1);
-        do_cpu_cores    = config_get_boolean("plugin:proc:/proc/stat", "per cpu core utilization", 1);
-        do_interrupts   = config_get_boolean("plugin:proc:/proc/stat", "cpu interrupts", 1);
-        do_context      = config_get_boolean("plugin:proc:/proc/stat", "context switches", 1);
-        do_forks        = config_get_boolean("plugin:proc:/proc/stat", "processes started", 1);
-        do_processes    = config_get_boolean("plugin:proc:/proc/stat", "processes running", 1);
-    }
-    
-    RRDSET *st;
-
-    char cpuid[5] = "cpu0";
-    unsigned long long user = 0, nice = 0, system = 0, interrupt = 0, idle = 0;
-    u_int vm_stat;
-    size_t intrcnt_size;
-    unsigned long nintr = 0;
-    unsigned long *intrcnt;
-    unsigned long long totalintr = 0;
-    unsigned long long running = 0 , blocked = 0;
-    
-    long multiplier = 1;
-    long divisor = 1; // sysconf(_SC_CLK_TCK);
-    
-    long cp_time[CPUSTATES];
-    long *pcpu_cp_time;
-    
-    int i, ncpus;
-    
-    struct vmtotal total;
-    
-    if(likely(do_cpu)) {
-        if (unlikely(CPUSTATES != 5)) {
-            error("There are %d CPU states (5 was expected)", CPUSTATES);
-            do_cpu = 0;
-            error("Total CPU utilization stats was switched off");
-            return 0;
-        }
-        if (unlikely(GETSYSCTL("kern.cp_time", cp_time))) {
-            do_cpu = 0;
-            error("Total CPU utilization stats was switched off");
-            return 0;
-        }
-        user = cp_time[0];
-        nice = cp_time[1];
-        system = cp_time[2];
-        interrupt = cp_time[3];
-        idle = cp_time[4];
-
-        st = rrdset_find_bytype("system", "cpu");
-        if(unlikely(!st)) {
-            st = rrdset_create("system", "cpu", NULL, "cpu", "system.cpu", "Total CPU utilization", "percentage", 100, update_every, RRDSET_TYPE_STACKED);
-
-            rrddim_add(st, "user", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL);
-            rrddim_add(st, "system", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL);
-            rrddim_add(st, "interrupt", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL);
-            rrddim_add(st, "nice", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL);
-            rrddim_add(st, "idle", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL);
-            rrddim_hide(st, "idle");
-        }
-        else rrdset_next(st);
-
-        rrddim_set(st, "user", user);
-        rrddim_set(st, "system", system);
-        rrddim_set(st, "interrupt", interrupt);
-        rrddim_set(st, "nice", nice);
-        rrddim_set(st, "idle", idle);
-        rrdset_done(st);
-    }
-
-    // --------------------------------------------------------------------
-    
-    if(likely(do_cpu_cores)) {
-        if (unlikely(CPUSTATES != 5)) {
-            error("There are %d CPU states (5 was expected)", CPUSTATES);
-            do_cpu_cores = 0;
-            error("CPU cores utilization stats was switched off");
-            return 0;
-        }
-        if (unlikely(GETSYSCTL("kern.smp.cpus", ncpus))) {
-            do_cpu_cores = 0;
-            error("CPU cores utilization stats was switched off");
-            return 0;
-        }
-        pcpu_cp_time = malloc(sizeof(cp_time) * ncpus);
-        
-        for (i = 0; i < ncpus; i++) {            
-            if (unlikely(getsysctl("kern.cp_times", pcpu_cp_time, sizeof(cp_time) * ncpus))) {
-                do_cpu_cores = 0;
-                error("CPU cores utilization stats was switched off");
-                return 0;
-            }
-            cpuid[3] = '0' + i;
-            user = pcpu_cp_time[i * 5 + 0];
-            nice = pcpu_cp_time[i * 5 + 1];
-            system = pcpu_cp_time[i * 5 + 2];
-            interrupt = pcpu_cp_time[i * 5 + 3];
-            idle = pcpu_cp_time[i * 5 + 4];
-
-            st = rrdset_find_bytype("cpu", cpuid);
-            if(unlikely(!st)) {
-                st = rrdset_create("cpu", cpuid, NULL, "utilization", "cpu.cpu", "Core utilization", "percentage", 1000, update_every, RRDSET_TYPE_STACKED);
-
-                rrddim_add(st, "user", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL);
-                rrddim_add(st, "system", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL);
-                rrddim_add(st, "interrupt", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL);            
-                rrddim_add(st, "nice", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL);
-                rrddim_add(st, "idle", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL);
-                rrddim_hide(st, "idle");
-            }
-            else rrdset_next(st);
-
-            rrddim_set(st, "user", user);
-            rrddim_set(st, "system", system);
-            rrddim_set(st, "interrupt", interrupt);        
-            rrddim_set(st, "nice", nice);        
-            rrddim_set(st, "idle", idle);
-            rrdset_done(st);
-        }
-        free(pcpu_cp_time);
-    }
-
-    // --------------------------------------------------------------------
-
-    if(likely(do_interrupts)) {
-        if (unlikely(sysctlbyname("hw.intrcnt", NULL, &intrcnt_size, NULL, 0) == -1)) {
-            error("sysctl(hw.intrcnt...) failed: %s", strerror(errno));
-            do_interrupts = 0;
-            error("Total device interrupts stats was switched off");
-            return 0;
-        }
-        nintr = intrcnt_size / sizeof(u_long);
-        intrcnt = malloc(nintr * sizeof(u_long));
-        if (unlikely(getsysctl("hw.intrcnt", intrcnt, nintr * sizeof(u_long)))){
-            do_interrupts = 0;
-            error("Total device interrupts stats was switched off");
-            return 0;
-        }
-        for (i = 0; i < nintr; i++)
-            totalintr += intrcnt[i];
-        free(intrcnt);
-
-        st = rrdset_find_bytype("system", "intr");
-        if(unlikely(!st)) {
-            st = rrdset_create("system", "intr", NULL, "interrupts", NULL, "Total Device Interrupts", "interrupts/s", 900, update_every, RRDSET_TYPE_LINE);
-            st->isdetail = 1;
-
-            rrddim_add(st, "interrupts", NULL, 1, 1, RRDDIM_INCREMENTAL);
-        }
-        else rrdset_next(st);
-
-        rrddim_set(st, "interrupts", totalintr);
-        rrdset_done(st);
-    }
-
-/* Temporarily switched off
-    if(likely(do_interrupts)) {
-        if (unlikely(GETSYSCTL("vm.stats.sys.v_intr", vm_stat))) {
-            do_interrupts = 0;
-            error("Device interrupts utilization stats was switched off");
-            return 0;
-        }
-
-        st = rrdset_find_bytype("system", "intr");
-        if(unlikely(!st)) {
-            st = rrdset_create("system", "intr", NULL, "interrupts", NULL, "Device Interrupts", "interrupts/s", 900, update_every, RRDSET_TYPE_LINE);
-            st->isdetail = 1;
-
-            rrddim_add(st, "interrupts", NULL, 1, 1, RRDDIM_INCREMENTAL);
-        }
-        else rrdset_next(st);
-
-        rrddim_set(st, "interrupts", vm_stat);
-        rrdset_done(st);
-    }
-*/
-    // --------------------------------------------------------------------
-
-    if(likely(do_context)) {
-        if (unlikely(GETSYSCTL("vm.stats.sys.v_swtch", vm_stat))) {
-            do_context = 0;
-            error("CPU context switches stats was switched off");
-            return 0;
-        }
-        
-        st = rrdset_find_bytype("system", "ctxt");
-        if(unlikely(!st)) {
-            st = rrdset_create("system", "ctxt", NULL, "processes", NULL, "CPU Context Switches", "context switches/s", 800, update_every, RRDSET_TYPE_LINE);
-
-            rrddim_add(st, "switches", NULL, 1, 1, RRDDIM_INCREMENTAL);
-        }
-        else rrdset_next(st);
-
-        rrddim_set(st, "switches", vm_stat);
-        rrdset_done(st);
-    }
-
-    // --------------------------------------------------------------------
-
-    if(likely(do_forks)) {
-        if (unlikely(GETSYSCTL("vm.stats.vm.v_forks", vm_stat))) {
-            do_forks = 0;
-            error("Fork stats was switched off");
-            return 0;
-        }
-        
-        st = rrdset_find_bytype("system", "forks");
-        if(unlikely(!st)) {
-            st = rrdset_create("system", "forks", NULL, "processes", NULL, "Started Processes", "processes/s", 700, update_every, RRDSET_TYPE_LINE);
-            st->isdetail = 1;
-
-            rrddim_add(st, "started", NULL, 1, 1, RRDDIM_INCREMENTAL);
-        }
-        else rrdset_next(st);
-
-        rrddim_set(st, "started", vm_stat);
-        rrdset_done(st);
-    }
-
-    // --------------------------------------------------------------------
-
-    if(likely(do_processes)) {
-        if (unlikely(GETSYSCTL("vm.vmtotal", total))) {
-            do_processes = 0;
-            error("System processes stats was switched off");
-            return 0;
-        }
-        
-        running = total.t_rq;
-        blocked = total.t_dw + total.t_pw;
-        
-        st = rrdset_find_bytype("system", "processes");
-        if(unlikely(!st)) {
-            st = rrdset_create("system", "processes", NULL, "processes", NULL, "System Processes", "processes", 600, update_every, RRDSET_TYPE_LINE);
-
-            rrddim_add(st, "running", NULL, 1, 1, RRDDIM_ABSOLUTE);
-            rrddim_add(st, "blocked", NULL, -1, 1, RRDDIM_ABSOLUTE);
-        }
-        else rrdset_next(st);
-
-        rrddim_set(st, "running", running);
-        rrddim_set(st, "blocked", blocked);
-        rrdset_done(st);
-    }
-
-    return 0;
-}
\ No newline at end of file
diff --git a/src/freebsd_sysctl.c b/src/freebsd_sysctl.c
new file mode 100644 (file)
index 0000000..5b6d035
--- /dev/null
@@ -0,0 +1,305 @@
+#include "common.h"
+
+// NEEDED BY: struct vmstat
+#include <sys/vmmeter.h>
+
+// FreeBSD calculates load averages once every 5 seconds
+#define MIN_LOADAVG_UPDATE_EVERY 5
+
+int do_freebsd_sysctl(int update_every, unsigned long long dt) {
+    (void)dt;
+
+    static int do_cpu = -1, do_cpu_cores = -1, do_interrupts = -1, do_context = -1, do_forks = -1, do_processes = -1,
+        do_loadavg = -1, do_all_processes = -1;
+
+    if(unlikely(do_cpu == -1)) {
+        do_cpu                  = config_get_boolean("plugin:freebsd:sysctl", "cpu utilization", 1);
+        do_cpu_cores            = config_get_boolean("plugin:freebsd:sysctl", "per cpu core utilization", 1);
+        do_interrupts           = config_get_boolean("plugin:freebsd:sysctl", "cpu interrupts", 1);
+        do_context              = config_get_boolean("plugin:freebsd:sysctl", "context switches", 1);
+        do_forks                = config_get_boolean("plugin:freebsd:sysctl", "processes started", 1);
+        do_processes            = config_get_boolean("plugin:freebsd:sysctl", "processes running", 1);
+        do_loadavg              = config_get_boolean("plugin:freebsd:sysctl", "enable load average", 1);
+        do_all_processes        = config_get_boolean("plugin:freebsd:sysctl", "enable total processes", 1);
+    }
+
+    RRDSET *st;
+
+    int i;
+
+// NEEDED BY: do_loadavg
+    static unsigned long long last_loadavg_usec = 0;
+    struct loadavg sysload;
+
+// NEEDED BY: do_cpu, do_cpu_cores
+    long cp_time[CPUSTATES];
+
+// NEEDED BY: do_cpu_cores
+    int ncpus;
+    static long *pcpu_cp_time = NULL;
+    char cpuid[8]; // no more than 4 digits expected
+
+// NEEDED BY: do_all_processes, do_processes
+    struct vmtotal vmtotal_data;
+
+// NEEDED BY: do_context, do_forks
+    u_int u_int_data;
+
+// NEEDED BY: do_interrupts
+    size_t intrcnt_size;
+    unsigned long nintr = 0;
+    static unsigned long *intrcnt = NULL;
+    unsigned long long totalintr = 0;
+
+    // --------------------------------------------------------------------
+
+    if(last_loadavg_usec <= dt) {
+        if(likely(do_loadavg)) {
+            if (unlikely(GETSYSCTL("vm.loadavg", sysload))) {
+                do_loadavg = 0;
+                error("DISABLED: system.load");
+            } else {
+
+                st = rrdset_find_bytype("system", "load");
+                if(unlikely(!st)) {
+                    st = rrdset_create("system", "load", NULL, "load", NULL, "System Load Average", "load", 100, (update_every < MIN_LOADAVG_UPDATE_EVERY) ? MIN_LOADAVG_UPDATE_EVERY : update_every, RRDSET_TYPE_LINE);
+                    rrddim_add(st, "load1", NULL, 1, 1000, RRDDIM_ABSOLUTE);
+                    rrddim_add(st, "load5", NULL, 1, 1000, RRDDIM_ABSOLUTE);
+                    rrddim_add(st, "load15", NULL, 1, 1000, RRDDIM_ABSOLUTE);
+                }
+                else rrdset_next(st);
+
+                rrddim_set(st, "load1", (collected_number) ((double)sysload.ldavg[0] / sysload.fscale * 1000));
+                rrddim_set(st, "load5", (collected_number) ((double)sysload.ldavg[1] / sysload.fscale * 1000));
+                rrddim_set(st, "load15", (collected_number) ((double)sysload.ldavg[2] / sysload.fscale * 1000));
+                rrdset_done(st);
+            }
+        }
+
+        last_loadavg_usec = st->update_every * 1000000ULL;
+    }
+    else last_loadavg_usec -= dt;
+
+    // --------------------------------------------------------------------
+
+    if(likely(do_all_processes | do_processes)) {
+        if (unlikely(GETSYSCTL("vm.vmtotal", vmtotal_data))) {
+            do_all_processes = 0;
+            error("DISABLED: system.active_processes");
+            do_processes = 0;
+            error("DISABLED: system.processes");
+        } else {
+            if(likely(do_processes)) {
+
+                st = rrdset_find_bytype("system", "active_processes");
+                if(unlikely(!st)) {
+                    st = rrdset_create("system", "active_processes", NULL, "processes", NULL, "System Active Processes", "processes", 750, update_every, RRDSET_TYPE_LINE);
+                    rrddim_add(st, "active", NULL, 1, 1, RRDDIM_ABSOLUTE);
+                }
+                else rrdset_next(st);
+
+                rrddim_set(st, "active", (vmtotal_data.t_rq + vmtotal_data.t_dw + vmtotal_data.t_pw + vmtotal_data.t_sl + vmtotal_data.t_sw));
+                rrdset_done(st);
+            }
+            if(likely(do_processes)) {
+
+                st = rrdset_find_bytype("system", "processes");
+                if(unlikely(!st)) {
+                    st = rrdset_create("system", "processes", NULL, "processes", NULL, "System Processes", "processes", 600, update_every, RRDSET_TYPE_LINE);
+
+                    rrddim_add(st, "running", NULL, 1, 1, RRDDIM_ABSOLUTE);
+                    rrddim_add(st, "blocked", NULL, -1, 1, RRDDIM_ABSOLUTE);
+                }
+                else rrdset_next(st);
+
+                rrddim_set(st, "running", vmtotal_data.t_rq);
+                rrddim_set(st, "blocked", (vmtotal_data.t_dw + vmtotal_data.t_pw));
+                rrdset_done(st);
+            }
+
+        }
+    }
+
+    // --------------------------------------------------------------------
+
+    if(likely(do_processes)) {
+
+            st = rrdset_find_bytype("system", "processes");
+            if(unlikely(!st)) {
+                st = rrdset_create("system", "processes", NULL, "processes", NULL, "System Processes", "processes", 600, update_every, RRDSET_TYPE_LINE);
+
+                rrddim_add(st, "running", NULL, 1, 1, RRDDIM_ABSOLUTE);
+                rrddim_add(st, "blocked", NULL, -1, 1, RRDDIM_ABSOLUTE);
+            }
+            else rrdset_next(st);
+
+            rrddim_set(st, "running", vmtotal_data.t_rq);
+            rrddim_set(st, "blocked", (vmtotal_data.t_dw + vmtotal_data.t_pw));
+            rrdset_done(st);
+        }
+
+    // --------------------------------------------------------------------
+
+    if(likely(do_cpu)) {
+        if (unlikely(CPUSTATES != 5)) {
+            error("FREEBSD: There are %d CPU states (5 was expected)", CPUSTATES);
+            do_cpu = 0;
+            error("DISABLED: system.cpu");
+        } else {
+            if (unlikely(GETSYSCTL("kern.cp_time", cp_time))) {
+                do_cpu = 0;
+                error("DISABLED: system.cpu");
+            } else {
+
+                st = rrdset_find_bytype("system", "cpu");
+                if(unlikely(!st)) {
+                    st = rrdset_create("system", "cpu", NULL, "cpu", "system.cpu", "Total CPU utilization", "percentage", 100, update_every, RRDSET_TYPE_STACKED);
+
+                    rrddim_add(st, "user", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
+                    rrddim_add(st, "nice", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
+                    rrddim_add(st, "system", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
+                    rrddim_add(st, "interrupt", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
+                    rrddim_add(st, "idle", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
+                    rrddim_hide(st, "idle");
+                }
+                else rrdset_next(st);
+
+                rrddim_set(st, "user", cp_time[0]);
+                rrddim_set(st, "nice", cp_time[1]);
+                rrddim_set(st, "system", cp_time[2]);
+                rrddim_set(st, "interrupt", cp_time[3]);
+                rrddim_set(st, "idle", cp_time[4]);
+                rrdset_done(st);
+            }
+        }
+    }
+
+    // --------------------------------------------------------------------
+
+    if(likely(do_cpu_cores)) {
+        if (unlikely(CPUSTATES != 5)) {
+            error("FREEBSD: There are %d CPU states (5 was expected)", CPUSTATES);
+            do_cpu_cores = 0;
+            error("DISABLED: cpu.cpuXX");
+        } else {
+            if (unlikely(GETSYSCTL("kern.smp.cpus", ncpus))) {
+                do_cpu_cores = 0;
+                error("DISABLED: cpu.cpuXX");
+            } else {
+                pcpu_cp_time = realloc(pcpu_cp_time, sizeof(cp_time) * ncpus);
+
+                for (i = 0; i < ncpus; i++) {
+                    if (unlikely(getsysctl("kern.cp_times", pcpu_cp_time, sizeof(cp_time) * ncpus))) {
+                        do_cpu_cores = 0;
+                        error("DISABLED: cpu.cpuXX");
+                        break;
+                    }
+                    if (unlikely(ncpus > 9999)) {
+                        error("FREEBSD: There are more than 4 digits in cpu cores number");
+                        do_cpu_cores = 0;
+                        error("DISABLED: cpu.cpuXX");
+                        break;
+                    }
+                    snprintfz(cpuid, 8, "cpu%d", i);
+
+                    st = rrdset_find_bytype("cpu", cpuid);
+                    if(unlikely(!st)) {
+                        st = rrdset_create("cpu", cpuid, NULL, "utilization", "cpu.cpu", "Core utilization", "percentage", 1000, update_every, RRDSET_TYPE_STACKED);
+
+                        rrddim_add(st, "user", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
+                        rrddim_add(st, "nice", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
+                        rrddim_add(st, "system", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
+                        rrddim_add(st, "interrupt", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
+                        rrddim_add(st, "idle", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
+                        rrddim_hide(st, "idle");
+                    }
+                    else rrdset_next(st);
+
+                    rrddim_set(st, "user", pcpu_cp_time[i * 5 + 0]);
+                    rrddim_set(st, "nice", pcpu_cp_time[i * 5 + 1]);
+                    rrddim_set(st, "system", pcpu_cp_time[i * 5 + 2]);
+                    rrddim_set(st, "interrupt", pcpu_cp_time[i * 5 + 3]);
+                    rrddim_set(st, "idle", pcpu_cp_time[i * 5 + 4]);
+                    rrdset_done(st);
+                }
+            }
+        }
+    }
+
+    // --------------------------------------------------------------------
+
+    if(likely(do_interrupts)) {
+        if (unlikely(sysctlbyname("hw.intrcnt", NULL, &intrcnt_size, NULL, 0) == -1)) {
+            error("FREEBSD: sysctl(hw.intrcnt...) failed: %s", strerror(errno));
+            do_interrupts = 0;
+            error("DISABLED: system.intr");
+        } else {
+            nintr = intrcnt_size / sizeof(u_long);
+            intrcnt = realloc(intrcnt, nintr * sizeof(u_long));
+            if (unlikely(getsysctl("hw.intrcnt", intrcnt, nintr * sizeof(u_long)))){
+                do_interrupts = 0;
+                error("DISABLED: system.intr");
+            } else {
+                for (i = 0; i < nintr; i++)
+                    totalintr += intrcnt[i];
+
+                st = rrdset_find_bytype("system", "intr");
+                if(unlikely(!st)) {
+                    st = rrdset_create("system", "intr", NULL, "interrupts", NULL, "Total Device Interrupts", "interrupts/s", 900, update_every, RRDSET_TYPE_LINE);
+                    st->isdetail = 1;
+
+                    rrddim_add(st, "interrupts", NULL, 1, 1, RRDDIM_INCREMENTAL);
+                }
+                else rrdset_next(st);
+
+                rrddim_set(st, "interrupts", totalintr);
+                rrdset_done(st);
+            }
+        }
+    }
+
+    // --------------------------------------------------------------------
+
+    if(likely(do_context)) {
+        if (unlikely(GETSYSCTL("vm.stats.sys.v_swtch", u_int_data))) {
+            do_context = 0;
+            error("DISABLED: system.ctxt");
+        } else {
+
+            st = rrdset_find_bytype("system", "ctxt");
+            if(unlikely(!st)) {
+                st = rrdset_create("system", "ctxt", NULL, "processes", NULL, "CPU Context Switches", "context switches/s", 800, update_every, RRDSET_TYPE_LINE);
+
+                rrddim_add(st, "switches", NULL, 1, 1, RRDDIM_INCREMENTAL);
+            }
+            else rrdset_next(st);
+
+            rrddim_set(st, "switches", u_int_data);
+            rrdset_done(st);
+        }
+    }
+
+    // --------------------------------------------------------------------
+
+    if(likely(do_forks)) {
+        if (unlikely(GETSYSCTL("vm.stats.vm.v_forks", u_int_data))) {
+            do_forks = 0;
+            error("DISABLED: system.forks");
+        } else {
+
+            st = rrdset_find_bytype("system", "forks");
+            if(unlikely(!st)) {
+                st = rrdset_create("system", "forks", NULL, "processes", NULL, "Started Processes", "processes/s", 700, update_every, RRDSET_TYPE_LINE);
+                st->isdetail = 1;
+
+                rrddim_add(st, "started", NULL, 1, 1, RRDDIM_INCREMENTAL);
+            }
+            else rrdset_next(st);
+
+            rrddim_set(st, "started", u_int_data);
+            rrdset_done(st);
+        }
+    }
+
+    return 0;
+}
index fab7799c70aadd297c0f1c1e8c99a394d520226e..b9ab4ef316148e57edb29dfbe514cd6de0e05a7c 100644 (file)
@@ -45,12 +45,11 @@ struct netdata_static_thread {
 
     {"tc",                 "plugins",   "tc",         1, NULL, NULL, tc_main},
     {"idlejitter",         "plugins",   "idlejitter", 1, NULL, NULL, cpuidlejitter_main},
-#ifndef __FreeBSD__    
+#ifndef __FreeBSD__
     {"proc",               "plugins",   "proc",       1, NULL, NULL, proc_main},
 #else
-    {"proc",               "plugins",   "proc",       1, NULL, NULL, freebsd_main},
+    {"freebsd",            "plugins",   "freebsd",    1, NULL, NULL, freebsd_main},
 #endif /* __FreeBSD__ */
-    
     {"cgroups",            "plugins",   "cgroups",    1, NULL, NULL, cgroups_main},
     {"check",              "plugins",   "checks",     0, NULL, NULL, checks_main},
     {"backends",            NULL,       NULL,         1, NULL, NULL, backends_main},
@@ -463,15 +462,15 @@ int main(int argc, char **argv)
         debug_flags = strtoull(flags, NULL, 0);
         debug(D_OPTIONS, "Debug flags set to '0x%8llx'.", debug_flags);
 
-#ifndef __FreeBSD__
         if(debug_flags != 0) {
             struct rlimit rl = { RLIM_INFINITY, RLIM_INFINITY };
             if(setrlimit(RLIMIT_CORE, &rl) != 0)
                 error("Cannot request unlimited core dumps for debugging... Proceeding anyway...");
 
+#ifndef __FreeBSD__
             prctl(PR_SET_DUMPABLE, 1, 0, 0, 0);
-        }
 #endif /* __FreeBSD__ */
+        }
 
         // --------------------------------------------------------------------
 
@@ -640,16 +639,16 @@ int main(int argc, char **argv)
     // initialize the log files
     open_all_log_files();
 
-#ifndef __FreeBSD__
 #ifdef NETDATA_INTERNAL_CHECKS
     if(debug_flags != 0) {
         struct rlimit rl = { RLIM_INFINITY, RLIM_INFINITY };
         if(setrlimit(RLIMIT_CORE, &rl) != 0)
             error("Cannot request unlimited core dumps for debugging... Proceeding anyway...");
+#ifndef __FreeBSD__
         prctl(PR_SET_DUMPABLE, 1, 0, 0, 0);
+#endif /* __FreeBSD__ */
     }
 #endif /* NETDATA_INTERNAL_CHECKS */
-#endif /* __FreeBSD__ */
 
     // fork, switch user, create pid file, set process priority
     if(become_daemon(dont_fork, user) == -1)
index 818accedd93553f1ff73c23c2bfe8c176e5890e8..47a18613727bffc4b37d876deb79b2d3b82ef876 100644 (file)
@@ -17,59 +17,13 @@ void *freebsd_main(void *ptr)
     config_get_boolean("plugin:proc:/proc/net/dev:lo", "enabled", 0);
     config_get_boolean("plugin:proc:/proc/net/dev:fireqos_monitor", "enabled", 0);
     */
-    
+
     // when ZERO, attempt to do it
-    /*
-    int vdo_proc_net_dev            = !config_get_boolean("plugin:proc", "/proc/net/dev", 1);
-    int vdo_proc_diskstats          = !config_get_boolean("plugin:proc", "/proc/diskstats", 1);
-    int vdo_proc_net_snmp           = !config_get_boolean("plugin:proc", "/proc/net/snmp", 1);
-    int vdo_proc_net_snmp6          = !config_get_boolean("plugin:proc", "/proc/net/snmp6", 1);
-    int vdo_proc_net_netstat        = !config_get_boolean("plugin:proc", "/proc/net/netstat", 1);
-    int vdo_proc_net_stat_conntrack = !config_get_boolean("plugin:proc", "/proc/net/stat/conntrack", 1);
-    int vdo_proc_net_ip_vs_stats    = !config_get_boolean("plugin:proc", "/proc/net/ip_vs/stats", 1);
-    int vdo_proc_net_stat_synproxy  = !config_get_boolean("plugin:proc", "/proc/net/stat/synproxy", 1);
-    int vdo_proc_stat               = !config_get_boolean("plugin:proc", "/proc/stat", 1);
-    int vdo_proc_meminfo            = !config_get_boolean("plugin:proc", "/proc/meminfo", 1);
-    int vdo_proc_vmstat             = !config_get_boolean("plugin:proc", "/proc/vmstat", 1);
-    int vdo_proc_net_rpc_nfs        = !config_get_boolean("plugin:proc", "/proc/net/rpc/nfs", 1);
-    int vdo_proc_net_rpc_nfsd       = !config_get_boolean("plugin:proc", "/proc/net/rpc/nfsd", 1);
-    int vdo_proc_sys_kernel_random_entropy_avail    = !config_get_boolean("plugin:proc", "/proc/sys/kernel/random/entropy_avail", 1);
-    int vdo_proc_interrupts         = !config_get_boolean("plugin:proc", "/proc/interrupts", 1);
-    int vdo_proc_softirqs           = !config_get_boolean("plugin:proc", "/proc/softirqs", 1);
-    int vdo_proc_net_softnet_stat   = !config_get_boolean("plugin:proc", "/proc/net/softnet_stat", 1);
-    int vdo_proc_loadavg            = !config_get_boolean("plugin:proc", "/proc/loadavg", 1);
-    int vdo_ipc                     = !config_get_boolean("plugin:proc", "ipc", 1);
-    int vdo_sys_kernel_mm_ksm       = !config_get_boolean("plugin:proc", "/sys/kernel/mm/ksm", 1);
-    */
-    int vdo_cpu_netdata             = !config_get_boolean("plugin:proc", "netdata server resources", 1);
-    int vdo_proc_stat               = !config_get_boolean("plugin:proc", "/proc/stat", 1);
-    int vdo_proc_loadavg            = !config_get_boolean("plugin:proc", "/proc/loadavg", 1);
+    int vdo_cpu_netdata             = !config_get_boolean("plugin:freebsd", "netdata server resources", 1);
+    int vdo_freebsd_sysctl          = !config_get_boolean("plugin:freebsd", "sysctl", 1);
 
     // keep track of the time each module was called
-    /*
-    unsigned long long sutime_proc_net_dev = 0ULL;
-    unsigned long long sutime_proc_diskstats = 0ULL;
-    unsigned long long sutime_proc_net_snmp = 0ULL;
-    unsigned long long sutime_proc_net_snmp6 = 0ULL;
-    unsigned long long sutime_proc_net_netstat = 0ULL;
-    unsigned long long sutime_proc_net_stat_conntrack = 0ULL;
-    unsigned long long sutime_proc_net_ip_vs_stats = 0ULL;
-    unsigned long long sutime_proc_net_stat_synproxy = 0ULL;
-    unsigned long long sutime_proc_stat = 0ULL;
-    unsigned long long sutime_proc_meminfo = 0ULL;
-    unsigned long long sutime_proc_vmstat = 0ULL;
-    unsigned long long sutime_proc_net_rpc_nfs = 0ULL;
-    unsigned long long sutime_proc_net_rpc_nfsd = 0ULL;
-    unsigned long long sutime_proc_sys_kernel_random_entropy_avail = 0ULL;
-    unsigned long long sutime_proc_interrupts = 0ULL;
-    unsigned long long sutime_proc_softirqs = 0ULL;
-    unsigned long long sutime_proc_net_softnet_stat = 0ULL;
-    unsigned long long sutime_proc_loadavg = 0ULL;
-    unsigned long long sutime_ipc = 0ULL;
-    unsigned long long sutime_sys_kernel_mm_ksm = 0ULL;
-    */
-    unsigned long long sutime_proc_stat = 0ULL;
-    unsigned long long sutime_proc_loadavg = 0ULL;
+    unsigned long long sutime_freebsd_sysctl = 0ULL;
 
     unsigned long long step = rrd_update_every * 1000000ULL;
     for(;;) {
@@ -84,183 +38,12 @@ void *freebsd_main(void *ptr)
         if(unlikely(netdata_exit)) break;
 
         // BEGIN -- the job to be done
-       /*
-
-        if(!vdo_sys_kernel_mm_ksm) {
-            debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_sys_kernel_mm_ksm().");
-
-            now = time_usec();
-            vdo_sys_kernel_mm_ksm = do_sys_kernel_mm_ksm(rrd_update_every, (sutime_sys_kernel_mm_ksm > 0)?now - sutime_sys_kernel_mm_ksm:0ULL);
-            sutime_sys_kernel_mm_ksm = now;
-        }
-        if(unlikely(netdata_exit)) break;
-
-        if(!vdo_proc_loadavg) {
-            debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_loadavg().");
-            now = time_usec();
-            vdo_proc_loadavg = do_proc_loadavg(rrd_update_every, (sutime_proc_loadavg > 0)?now - sutime_proc_loadavg:0ULL);
-            sutime_proc_loadavg = now;
-        }
-        if(unlikely(netdata_exit)) break;
-
-        if(!vdo_ipc) {
-            debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_ipc().");
-            now = time_usec();
-            vdo_ipc = do_ipc(rrd_update_every, (sutime_ipc > 0)?now - sutime_ipc:0ULL);
-            sutime_ipc = now;
-        }
-        if(unlikely(netdata_exit)) break;
-
-        if(!vdo_proc_interrupts) {
-            debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_interrupts().");
-            now = time_usec();
-            vdo_proc_interrupts = do_proc_interrupts(rrd_update_every, (sutime_proc_interrupts > 0)?now - sutime_proc_interrupts:0ULL);
-            sutime_proc_interrupts = now;
-        }
-        if(unlikely(netdata_exit)) break;
-
-        if(!vdo_proc_softirqs) {
-            debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_softirqs().");
-            now = time_usec();
-            vdo_proc_softirqs = do_proc_softirqs(rrd_update_every, (sutime_proc_softirqs > 0)?now - sutime_proc_softirqs:0ULL);
-            sutime_proc_softirqs = now;
-        }
-        if(unlikely(netdata_exit)) break;
-
-        if(!vdo_proc_net_softnet_stat) {
-            debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_softnet_stat().");
-            now = time_usec();
-            vdo_proc_net_softnet_stat = do_proc_net_softnet_stat(rrd_update_every, (sutime_proc_net_softnet_stat > 0)?now - sutime_proc_net_softnet_stat:0ULL);
-            sutime_proc_net_softnet_stat = now;
-        }
-        if(unlikely(netdata_exit)) break;
-
-        if(!vdo_proc_sys_kernel_random_entropy_avail) {
-            debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_sys_kernel_random_entropy_avail().");
-            now = time_usec();
-            vdo_proc_sys_kernel_random_entropy_avail = do_proc_sys_kernel_random_entropy_avail(rrd_update_every, (sutime_proc_sys_kernel_random_entropy_avail > 0)?now - sutime_proc_sys_kernel_random_entropy_avail:0ULL);
-            sutime_proc_sys_kernel_random_entropy_avail = now;
-        }
-        if(unlikely(netdata_exit)) break;
-
-        if(!vdo_proc_net_dev) {
-            debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_dev().");
-            now = time_usec();
-            vdo_proc_net_dev = do_proc_net_dev(rrd_update_every, (sutime_proc_net_dev > 0)?now - sutime_proc_net_dev:0ULL);
-            sutime_proc_net_dev = now;
-        }
-        if(unlikely(netdata_exit)) break;
-
-        if(!vdo_proc_diskstats) {
-            debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_diskstats().");
-            now = time_usec();
-            vdo_proc_diskstats = do_proc_diskstats(rrd_update_every, (sutime_proc_diskstats > 0)?now - sutime_proc_diskstats:0ULL);
-            sutime_proc_diskstats = now;
-        }
-        if(unlikely(netdata_exit)) break;
-
-        if(!vdo_proc_net_snmp) {
-            debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_snmp().");
-            now = time_usec();
-            vdo_proc_net_snmp = do_proc_net_snmp(rrd_update_every, (sutime_proc_net_snmp > 0)?now - sutime_proc_net_snmp:0ULL);
-            sutime_proc_net_snmp = now;
-        }
-        if(unlikely(netdata_exit)) break;
-
-        if(!vdo_proc_net_snmp6) {
-            debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_snmp6().");
-            now = time_usec();
-            vdo_proc_net_snmp6 = do_proc_net_snmp6(rrd_update_every, (sutime_proc_net_snmp6 > 0)?now - sutime_proc_net_snmp6:0ULL);
-            sutime_proc_net_snmp6 = now;
-        }
-        if(unlikely(netdata_exit)) break;
-
-        if(!vdo_proc_net_netstat) {
-            debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_netstat().");
-            now = time_usec();
-            vdo_proc_net_netstat = do_proc_net_netstat(rrd_update_every, (sutime_proc_net_netstat > 0)?now - sutime_proc_net_netstat:0ULL);
-            sutime_proc_net_netstat = now;
-        }
-        if(unlikely(netdata_exit)) break;
 
-        if(!vdo_proc_net_stat_conntrack) {
-            debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_stat_conntrack().");
+        if(!vdo_freebsd_sysctl) {
+            debug(D_PROCNETDEV_LOOP, "FREEBSD: calling do_freebsd_sysctl().");
             now = time_usec();
-            vdo_proc_net_stat_conntrack = do_proc_net_stat_conntrack(rrd_update_every, (sutime_proc_net_stat_conntrack > 0)?now - sutime_proc_net_stat_conntrack:0ULL);
-            sutime_proc_net_stat_conntrack = now;
-        }
-        if(unlikely(netdata_exit)) break;
-
-        if(!vdo_proc_net_ip_vs_stats) {
-            debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling vdo_proc_net_ip_vs_stats().");
-            now = time_usec();
-            vdo_proc_net_ip_vs_stats = do_proc_net_ip_vs_stats(rrd_update_every, (sutime_proc_net_ip_vs_stats > 0)?now - sutime_proc_net_ip_vs_stats:0ULL);
-            sutime_proc_net_ip_vs_stats = now;
-        }
-        if(unlikely(netdata_exit)) break;
-
-        if(!vdo_proc_net_stat_synproxy) {
-            debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling vdo_proc_net_stat_synproxy().");
-            now = time_usec();
-            vdo_proc_net_stat_synproxy = do_proc_net_stat_synproxy(rrd_update_every, (sutime_proc_net_stat_synproxy > 0)?now - sutime_proc_net_stat_synproxy:0ULL);
-            sutime_proc_net_stat_synproxy = now;
-        }
-        if(unlikely(netdata_exit)) break;
-
-        if(!vdo_proc_stat) {
-            debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_stat().");
-            now = time_usec();
-            vdo_proc_stat = do_proc_stat(rrd_update_every, (sutime_proc_stat > 0)?now - sutime_proc_stat:0ULL);
-            sutime_proc_stat = now;
-        }
-        if(unlikely(netdata_exit)) break;
-
-        if(!vdo_proc_meminfo) {
-            debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling vdo_proc_meminfo().");
-            now = time_usec();
-            vdo_proc_meminfo = do_proc_meminfo(rrd_update_every, (sutime_proc_meminfo > 0)?now - sutime_proc_meminfo:0ULL);
-            sutime_proc_meminfo = now;
-        }
-        if(unlikely(netdata_exit)) break;
-
-        if(!vdo_proc_vmstat) {
-            debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling vdo_proc_vmstat().");
-            now = time_usec();
-            vdo_proc_vmstat = do_proc_vmstat(rrd_update_every, (sutime_proc_vmstat > 0)?now - sutime_proc_vmstat:0ULL);
-            sutime_proc_vmstat = now;
-        }
-        if(unlikely(netdata_exit)) break;
-
-        if(!vdo_proc_net_rpc_nfsd) {
-            debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_rpc_nfsd().");
-            now = time_usec();
-            vdo_proc_net_rpc_nfsd = do_proc_net_rpc_nfsd(rrd_update_every, (sutime_proc_net_rpc_nfsd > 0)?now - sutime_proc_net_rpc_nfsd:0ULL);
-            sutime_proc_net_rpc_nfsd = now;
-        }
-        if(unlikely(netdata_exit)) break;
-
-        if(!vdo_proc_net_rpc_nfs) {
-            debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_rpc_nfs().");
-            now = time_usec();
-            vdo_proc_net_rpc_nfs = do_proc_net_rpc_nfs(rrd_update_every, (sutime_proc_net_rpc_nfs > 0)?now - sutime_proc_net_rpc_nfs:0ULL);
-            sutime_proc_net_rpc_nfs = now;
-        }
-        if(unlikely(netdata_exit)) break;
-        */
-        
-        if(!vdo_proc_stat) {
-            debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_stat().");
-            now = time_usec();
-            vdo_proc_stat = do_proc_stat(rrd_update_every, (sutime_proc_stat > 0)?now - sutime_proc_stat:0ULL);
-            sutime_proc_stat = now;
-        }
-        if(unlikely(netdata_exit)) break;
-
-        if(!vdo_proc_loadavg) {
-            debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_loadavg().");
-            now = time_usec();
-            vdo_proc_loadavg = do_proc_loadavg(rrd_update_every, (sutime_proc_loadavg > 0)?now - sutime_proc_loadavg:0ULL);
-            sutime_proc_loadavg = now;
+            vdo_freebsd_sysctl = do_freebsd_sysctl(rrd_update_every, (sutime_freebsd_sysctl > 0)?now - sutime_freebsd_sysctl:0ULL);
+            sutime_freebsd_sysctl = now;
         }
         if(unlikely(netdata_exit)) break;
 
@@ -285,14 +68,12 @@ int getsysctl(const char *name, void *ptr, size_t len)
     size_t nlen = len;
 
     if (unlikely(sysctlbyname(name, ptr, &nlen, NULL, 0) == -1)) {
-        error("FREEBSD: sysctl(%s...) failed: %s\n", name,
-            strerror(errno));
+        error("FREEBSD: sysctl(%s...) failed: %s", name, strerror(errno));
         return 1;
     }
     if (unlikely(nlen != len)) {
-        error("FREEBSD: sysctl(%s...) expected %lu, got %lu\n",
-            name, (unsigned long)len, (unsigned long)nlen);
+        error("FREEBSD: sysctl(%s...) expected %lu, got %lu", name, (unsigned long)len, (unsigned long)nlen);
         return 1;
     }
     return 0;
-}
\ No newline at end of file
+}
index 6279683eb3927150de2fef855cc1a90219b29823..ee432bfc6d1af78f36c57f8eff2bf4665f0b4488 100644 (file)
@@ -5,29 +5,8 @@
 
 void *freebsd_main(void *ptr);
 
-extern int getsysctl(const char *name, void *ptr, size_t len);
+int getsysctl(const char *name, void *ptr, size_t len);
 
-/*
-extern int do_proc_net_dev(int update_every, unsigned long long dt);
-extern int do_proc_diskstats(int update_every, unsigned long long dt);
-extern int do_proc_net_snmp(int update_every, unsigned long long dt);
-extern int do_proc_net_snmp6(int update_every, unsigned long long dt);
-extern int do_proc_net_netstat(int update_every, unsigned long long dt);
-extern int do_proc_net_stat_conntrack(int update_every, unsigned long long dt);
-extern int do_proc_net_ip_vs_stats(int update_every, unsigned long long dt);
-extern int do_proc_meminfo(int update_every, unsigned long long dt);
-extern int do_proc_vmstat(int update_every, unsigned long long dt);
-extern int do_proc_net_rpc_nfs(int update_every, unsigned long long dt);
-extern int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt);
-extern int do_proc_sys_kernel_random_entropy_avail(int update_every, unsigned long long dt);
-extern int do_proc_interrupts(int update_every, unsigned long long dt);
-extern int do_proc_softirqs(int update_every, unsigned long long dt);
-extern int do_sys_kernel_mm_ksm(int update_every, unsigned long long dt);
-extern int do_proc_loadavg(int update_every, unsigned long long dt);
-extern int do_proc_net_stat_synproxy(int update_every, unsigned long long dt);
-extern int do_proc_net_softnet_stat(int update_every, unsigned long long dt);
-*/
-extern int do_proc_stat(int update_every, unsigned long long dt);
-extern int do_proc_loadavg(int update_every, unsigned long long dt);
+extern int do_freebsd_sysctl(int update_every, unsigned long long dt);
 
-#endif /* NETDATA_FREEBSD_PROC_H */
+#endif /* NETDATA_PLUGIN_FREEBSD_H */