3 void *freebsd_main(void *ptr)
7 info("FREEBSD Plugin thread created with task id %d", gettid());
9 if(pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL) != 0)
10 error("Cannot set pthread cancel type to DEFERRED.");
12 if(pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL) != 0)
13 error("Cannot set pthread cancel state to ENABLE.");
15 // disable (by default) various interface that are not needed
17 config_get_boolean("plugin:proc:/proc/net/dev:lo", "enabled", 0);
18 config_get_boolean("plugin:proc:/proc/net/dev:fireqos_monitor", "enabled", 0);
21 // when ZERO, attempt to do it
22 int vdo_cpu_netdata = !config_get_boolean("plugin:freebsd", "netdata server resources", 1);
23 int vdo_freebsd_sysctl = !config_get_boolean("plugin:freebsd", "sysctl", 1);
25 // keep track of the time each module was called
26 unsigned long long sutime_freebsd_sysctl = 0ULL;
28 unsigned long long step = rrd_update_every * 1000000ULL;
30 unsigned long long now = time_usec();
31 unsigned long long next = now - (now % step) + step;
34 sleep_usec(next - now);
38 if(unlikely(netdata_exit)) break;
40 // BEGIN -- the job to be done
42 if(!vdo_freebsd_sysctl) {
43 debug(D_PROCNETDEV_LOOP, "FREEBSD: calling do_freebsd_sysctl().");
45 vdo_freebsd_sysctl = do_freebsd_sysctl(rrd_update_every, (sutime_freebsd_sysctl > 0)?now - sutime_freebsd_sysctl:0ULL);
46 sutime_freebsd_sysctl = now;
48 if(unlikely(netdata_exit)) break;
50 // END -- the job is done
52 // --------------------------------------------------------------------
54 if(!vdo_cpu_netdata) {
55 global_statistics_charts();
56 registry_statistics();
60 info("FREEBSD thread exiting");
66 int getsysctl(const char *name, void *ptr, size_t len)
70 if (unlikely(sysctlbyname(name, ptr, &nlen, NULL, 0) == -1)) {
71 error("FREEBSD: sysctl(%s...) failed: %s", name, strerror(errno));
74 if (unlikely(nlen != len)) {
75 error("FREEBSD: sysctl(%s...) expected %lu, got %lu", name, (unsigned long)len, (unsigned long)nlen);