Changeset: b8e0f36f1998 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b8e0f36f1998
Modified Files:
gdk/gdk_atomic.h
gdk/gdk_system.c
gdk/gdk_system.h
Branch: Apr2019
Log Message:
Destructor for atomic variables.
Only needed for the backup implementation using pthread mutexes.
diffs (91 lines):
diff --git a/gdk/gdk_atomic.h b/gdk/gdk_atomic.h
--- a/gdk/gdk_atomic.h
+++ b/gdk/gdk_atomic.h
@@ -14,6 +14,7 @@
* The following operations are defined:
* ATOMIC_VAR_INIT -- initializer for the variable (not necessarily atomic!);
* ATOMIC_INIT -- initialize the variable (not necessarily atomic!);
+ * ATOMIC_DESTROY -- destroy the variable
* ATOMIC_GET -- return the value of a variable;
* ATOMIC_SET -- set the value of a variable;
* ATOMIC_ADD -- add a value to a variable, return original value;
@@ -45,6 +46,7 @@
#define ATOMIC_TYPE AO_t
#define ATOMIC_VAR_INIT(val) (val)
#define ATOMIC_INIT(var, val) (*(var) = (val))
+#define ATOMIC_DESTROY(var) ((void) 0)
#define ATOMIC_GET(var) AO_load_full(var)
#define ATOMIC_SET(var, val) AO_store_full(var, (AO_t) (val))
@@ -86,6 +88,7 @@
#endif
#define ATOMIC_INIT(var, val) atomic_init(var, (ATOMIC_CAST) (val))
+#define ATOMIC_DESTROY(var) ((void) 0)
#define ATOMIC_GET(var) atomic_load(var)
#define ATOMIC_SET(var, val) atomic_store(var, (ATOMIC_CAST) (val))
#define ATOMIC_ADD(var, val) atomic_fetch_add(var, (ATOMIC_CAST) (val))
@@ -107,6 +110,7 @@
#define ATOMIC_TYPE volatile int64_t
#define ATOMIC_VAR_INIT(val) (val)
#define ATOMIC_INIT(var, val) (*(var) = (val))
+#define ATOMIC_DESTROY(var) ((void) 0)
#define ATOMIC_GET(var) (*(var))
/* should we use _InterlockedExchangeAdd64(var, 0) instead? */
@@ -127,6 +131,7 @@
#define ATOMIC_TYPE volatile int
#define ATOMIC_VAR_INIT(val) (val)
#define ATOMIC_INIT(var, val) (*(var) = (val))
+#define ATOMIC_DESTROY(var) ((void) 0)
#define ATOMIC_GET(var) (*(var))
/* should we use _InterlockedExchangeAdd(var, 0) instead? */
@@ -161,6 +166,7 @@
#endif
#define ATOMIC_VAR_INIT(val) (val)
#define ATOMIC_INIT(var, val) (*(var) = (val))
+#define ATOMIC_DESTROY(var) ((void) 0)
#define ATOMIC_GET(var) __atomic_load_n(var, __ATOMIC_SEQ_CST)
#define ATOMIC_SET(var, val) __atomic_store_n(var, (ATOMIC_TYPE) (val),
__ATOMIC_SEQ_CST)
@@ -192,6 +198,8 @@ ATOMIC_INIT(ATOMIC_TYPE *var, size_t val
}
#define ATOMIC_INIT(var, val) ATOMIC_INIT((var), (size_t) (val))
+#define ATOMIC_DESTROY(var) pthread_mutex_destroy(&(var)->lck)
+
static inline size_t
ATOMIC_GET(ATOMIC_TYPE *var)
{
diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c
--- a/gdk/gdk_system.c
+++ b/gdk/gdk_system.c
@@ -305,6 +305,7 @@ rm_winthread(struct winthread *w)
if (*wp)
*wp = w->next;
LeaveCriticalSection(&winthread_cs);
+ ATOMIC_DESTROY(&w->exited);
free(w);
}
@@ -626,6 +627,7 @@ rm_posthread_locked(struct posthread *p)
;
if (*pp)
*pp = p->next;
+ ATOMIC_DESTROY(&p->exited);
free(p);
}
diff --git a/gdk/gdk_system.h b/gdk/gdk_system.h
--- a/gdk/gdk_system.h
+++ b/gdk/gdk_system.h
@@ -256,6 +256,8 @@ gdk_export int MT_join_thread(MT_Id t);
break; \
} \
ATOMIC_CLEAR(&GDKlocklistlock); \
+ ATOMIC_DESTROY(&(l)->contention); \
+ ATOMIC_DESTROY(&(l)->sleep); \
} \
} while (0)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list