]> arthur.barton.de Git - netdata.git/blobdiff - src/rrd.h
RRDHOSTs free all their memory (all substructures) when they are deallocated
[netdata.git] / src / rrd.h
index ad75c3d6a11fc34f4320832c8a91adedc1846d4b..2247e9a4e3d3bc7365736ca1c94012fe4edc6230 100644 (file)
--- a/src/rrd.h
+++ b/src/rrd.h
@@ -371,14 +371,27 @@ extern RRDHOST *rrdhost_find_or_create(const char *hostname, const char *guid);
 #ifdef NETDATA_INTERNAL_CHECKS
 #define rrdhost_check_rdlock(host) rrdhost_check_rdlock_int(host, __FILE__, __FUNCTION__, __LINE__)
 #define rrdhost_check_wrlock(host) rrdhost_check_wrlock_int(host, __FILE__, __FUNCTION__, __LINE__)
+#define rrd_check_rdlock() rrd_check_rdlock_int(__FILE__, __FUNCTION__, __LINE__)
+#define rrd_check_wrlock() rrd_check_wrlock_int(__FILE__, __FUNCTION__, __LINE__)
 #else
 #define rrdhost_check_rdlock(host) (void)0
 #define rrdhost_check_wrlock(host) (void)0
+#define rrd_check_rdlock() (void)0
+#define rrd_check_wrlock() (void)0
 #endif
 
 extern void rrdhost_check_wrlock_int(RRDHOST *host, const char *file, const char *function, const unsigned long line);
 extern void rrdhost_check_rdlock_int(RRDHOST *host, const char *file, const char *function, const unsigned long line);
 
+// ----------------------------------------------------------------------------
+// global lock for all RRDHOSTs
+
+extern pthread_rwlock_t rrd_rwlock;
+#define rrd_rdlock() pthread_rwlock_rdlock(&rrd_rwlock)
+#define rrd_wrlock() pthread_rwlock_wrlock(&rrd_rwlock)
+#define rrd_unlock() pthread_rwlock_unlock(&rrd_rwlock)
+
+
 // ----------------------------------------------------------------------------
 // RRDSET functions