summaryrefslogtreecommitdiff
path: root/net-mgmt/netdata/files/patch-src_plugin__freebsd.h
diff options
context:
space:
mode:
Diffstat (limited to 'net-mgmt/netdata/files/patch-src_plugin__freebsd.h')
-rw-r--r--net-mgmt/netdata/files/patch-src_plugin__freebsd.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/net-mgmt/netdata/files/patch-src_plugin__freebsd.h b/net-mgmt/netdata/files/patch-src_plugin__freebsd.h
new file mode 100644
index 000000000000..add7a19b16fd
--- /dev/null
+++ b/net-mgmt/netdata/files/patch-src_plugin__freebsd.h
@@ -0,0 +1,27 @@
+--- src/plugin_freebsd.h.orig 2017-01-22 19:49:22 UTC
++++ src/plugin_freebsd.h
+@@ -6,9 +6,22 @@
+ #define GETSYSCTL(name, var) getsysctl(name, &(var), sizeof(var))
+
+ void *freebsd_main(void *ptr);
++extern int do_freebsd_sysctl(int update_every, usec_t dt);
+
+-int getsysctl(const char *name, void *ptr, size_t len);
++static inline
++int getsysctl(const char *name, void *ptr, size_t len)
++{
++ size_t nlen = len;
+
+-extern int do_freebsd_sysctl(int update_every, usec_t dt);
++ if (unlikely(sysctlbyname(name, ptr, &nlen, NULL, 0) == -1)) {
++ error("FREEBSD: sysctl(%s...) failed: %s", name, strerror(errno));
++ return 1;
++ }
++ if (unlikely(nlen != len)) {
++ error("FREEBSD: sysctl(%s...) expected %lu, got %lu", name, (unsigned long)len, (unsigned long)nlen);
++ return 1;
++ }
++ return 0;
++}
+
+ #endif /* NETDATA_PLUGIN_FREEBSD_H */