X-Git-Url: https://arthur.barton.de/gitweb/?a=blobdiff_plain;f=src%2Fplugin_freebsd.h;h=3a1ac39100ff884171bfcb5bdb0a7b3b7afa6e96;hb=14c7c7206eef181f536464bf4e206d568466728f;hp=6607a28823a1b1dd487915bf9125d41375244fb0;hpb=d2af61701b7c47f441c69758dc3909f5b31d5731;p=netdata.git diff --git a/src/plugin_freebsd.h b/src/plugin_freebsd.h index 6607a288..3a1ac391 100644 --- a/src/plugin_freebsd.h +++ b/src/plugin_freebsd.h @@ -1,28 +1,27 @@ #ifndef NETDATA_PLUGIN_FREEBSD_H #define NETDATA_PLUGIN_FREEBSD_H 1 +#include + +#define GETSYSCTL(name, var) getsysctl(name, &(var), sizeof(var)) + void *freebsd_main(void *ptr); -/* -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_stat(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_freebsd_sysctl(int update_every, usec_t dt); + +static inline 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", 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_FREEBSD_PROC_H */ +#endif /* NETDATA_PLUGIN_FREEBSD_H */