freebsd*)
build_target=freebsd
;;
-*)
+*)
;;
esac
if FREEBSD
netdata_SOURCES += \
plugin_freebsd.c plugin_freebsd.h \
- freebsd_loadavg.c \
- freebsd_stat.c \
+ freebsd_sysctl.c \
$(NULL)
else
netdata_SOURCES += \
$(NULL)
endif
-
netdata_LDADD = \
$(OPTIONAL_MATH_LIBS) \
$(OPTIONAL_NFACCT_LIBS) \
#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 = "";
}
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__ */
}
#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>
+++ /dev/null
-#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;
-}
+++ /dev/null
-#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
--- /dev/null
+#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;
+}
{"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},
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__ */
+ }
// --------------------------------------------------------------------
// 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)
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(;;) {
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;
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
+}
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 */