]> arthur.barton.de Git - netdata.git/blobdiff - src/common.h
Merge branch 'master' into ab-debian
[netdata.git] / src / common.h
index baa95dcb07e92a7505d11f9e1204a87cc519f13d..f2c764b53495389e6e17752c3e82261281b0a7df 100644 (file)
@@ -5,6 +5,9 @@
 #include <config.h>
 #endif
 
+// ----------------------------------------------------------------------------
+// system include files for all netdata C programs
+
 /* select the memory allocator, based on autoconf findings */
 #if defined(ENABLE_JEMALLOC)
 
 
 #include <pthread.h>
 #include <errno.h>
-
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdarg.h>
 #include <stddef.h>
-
 #include <ctype.h>
 #include <string.h>
 #include <strings.h>
-
 #include <arpa/inet.h>
 #include <netinet/tcp.h>
 
 #include <signal.h>
 #include <syslog.h>
 #include <sys/mman.h>
-#if !(defined(__FreeBSD__) || defined(__APPLE__))
+
+#ifdef HAVE_SYS_PRCTL_H
 #include <sys/prctl.h>
-#endif /* __FreeBSD__ || __APPLE__*/
+#endif
+
 #include <sys/resource.h>
 #include <sys/socket.h>
 #include <sys/stat.h>
 #include <zlib.h>
 #endif
 
+#ifdef HAVE_CAPABILITY
+#include <sys/capability.h>
+#endif
+
+// ----------------------------------------------------------------------------
+// netdata common definitions
+
 #if (SIZEOF_VOID_P == 8)
 #define ENVIRONMENT64
 #elif (SIZEOF_VOID_P == 4)
 #define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
 #endif // __GNUC__
 
-#include "avl.h"
+#ifdef HAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL
+#define NEVERNULL __attribute__((returns_nonnull))
+#else
+#define NEVERNULL
+#endif
+
+#ifdef HAVE_FUNC_ATTRIBUTE_MALLOC
+#define MALLOCLIKE __attribute__((malloc))
+#else
+#define MALLOCLIKE
+#endif
+
+#ifdef HAVE_FUNC_ATTRIBUTE_FORMAT
+#define PRINTFLIKE(f, a) __attribute__ ((format(__printf__, f, a)))
+#else
+#define PRINTFLIKE(f, a)
+#endif
+
+#ifdef HAVE_FUNC_ATTRIBUTE_NORETURN
+#define NORETURN __attribute__ ((noreturn))
+#else
+#define NORETURN
+#endif
+
+#ifdef HAVE_FUNC_ATTRIBUTE_WARN_UNUSED_RESULT
+#define WARNUNUSED __attribute__ ((warn_unused_result))
+#else
+#define WARNUNUSED
+#endif
+
+#ifdef abs
+#undef abs
+#endif
+#define abs(x) ((x < 0)? -x : x)
+
+#define GUID_LEN 36
+
+// ----------------------------------------------------------------------------
+// netdata include files
+
 #include "clocks.h"
 #include "log.h"
+#include "locks.h"
+#include "simple_pattern.h"
+#include "avl.h"
 #include "global_statistics.h"
 #include "storage_number.h"
 #include "web_buffer.h"
 #include "plugin_checks.h"
 #include "plugin_idlejitter.h"
 #include "plugin_nfacct.h"
+
 #if defined(__FreeBSD__)
 #include "plugin_freebsd.h"
+#define NETDATA_OS_TYPE "freebsd"
 #elif defined(__APPLE__)
 #include "plugin_macos.h"
+#define NETDATA_OS_TYPE "macos"
 #else
 #include "plugin_proc.h"
+#include "plugin_proc_diskspace.h"
+#define NETDATA_OS_TYPE "linux"
 #endif /* __FreeBSD__, __APPLE__*/
-#include "plugin_tc.h"
-#include "plugins_d.h"
 
 #include "socket.h"
-
 #include "eval.h"
 #include "health.h"
-
 #include "rrd.h"
+#include "plugin_tc.h"
+#include "plugins_d.h"
 #include "rrd2json.h"
-
+#include "rrd2json_api_old.h"
 #include "web_client.h"
 #include "web_server.h"
-
 #include "registry.h"
 #include "daemon.h"
 #include "main.h"
 #include "unit_test.h"
-
 #include "ipc.h"
 #include "backends.h"
-
-#ifdef abs
-#undef abs
-#endif
-#define abs(x) ((x < 0)? -x : x)
+#include "inlined.h"
+#include "adaptive_resortable_list.h"
+#include "rrdpush.h"
+#include "web_api_v1.h"
+#include "web_api_old.h"
+
+extern char *netdata_configured_hostname;
+extern char *netdata_configured_config_dir;
+extern char *netdata_configured_log_dir;
+extern char *netdata_configured_plugins_dir;
+extern char *netdata_configured_web_dir;
+extern char *netdata_configured_cache_dir;
+extern char *netdata_configured_varlib_dir;
+extern char *netdata_configured_home_dir;
+extern char *netdata_configured_host_prefix;
 
 extern void netdata_fix_chart_id(char *s);
 extern void netdata_fix_chart_name(char *s);
 
-extern uint32_t simple_hash(const char *name);
-extern uint32_t simple_uhash(const char *name);
-
 extern void strreverse(char* begin, char* end);
 extern char *mystrsep(char **ptr, char *s);
 extern char *trim(char *s);
 
-extern char *strncpyz(char *dst, const char *src, size_t n);
 extern int  vsnprintfz(char *dst, size_t n, const char *fmt, va_list args);
-extern int  snprintfz(char *dst, size_t n, const char *fmt, ...) __attribute__ (( format (printf, 3, 4)));
+extern int  snprintfz(char *dst, size_t n, const char *fmt, ...) PRINTFLIKE(3, 4);
 
 // memory allocation functions that handle failures
 #ifdef NETDATA_LOG_ALLOCATIONS
@@ -198,10 +256,10 @@ extern void *mallocz_int(const char *file, const char *function, const unsigned
 extern void *reallocz_int(const char *file, const char *function, const unsigned long line, void *ptr, size_t size);
 extern void freez_int(const char *file, const char *function, const unsigned long line, void *ptr);
 #else
-extern char *strdupz(const char *s);
-extern void *callocz(size_t nmemb, size_t size);
-extern void *mallocz(size_t size);
-extern void *reallocz(void *ptr, size_t size);
+extern char *strdupz(const char *s) MALLOCLIKE NEVERNULL;
+extern void *callocz(size_t nmemb, size_t size) MALLOCLIKE NEVERNULL;
+extern void *mallocz(size_t size) MALLOCLIKE NEVERNULL;
+extern void *reallocz(void *ptr, size_t size) MALLOCLIKE NEVERNULL;
 extern void freez(void *ptr);
 #endif
 
@@ -212,7 +270,6 @@ extern int savememory(const char *filename, void *mem, size_t size);
 
 extern int fd_is_valid(int fd);
 
-extern char *global_host_prefix;
 extern int enable_ksm;
 
 extern pid_t gettid(void);
@@ -231,6 +288,10 @@ extern pid_t get_system_pid_max(void);
 extern unsigned int hz;
 extern void get_system_HZ(void);
 
+extern volatile sig_atomic_t netdata_exit;
+extern const char *os_type;
+
+extern const char *program_version;
 
 /* fix for alpine linux */
 #ifndef RUSAGE_THREAD
@@ -239,6 +300,4 @@ extern void get_system_HZ(void);
 #endif
 #endif
 
-extern int read_single_number_file(const char *filename, unsigned long long *result);
-
 #endif /* NETDATA_COMMON_H */