aboutsummaryrefslogtreecommitdiff
path: root/src/mutex_unix.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2015-09-06 02:51:04 +0000
committerdrh <drh@noemail.net>2015-09-06 02:51:04 +0000
commit6081c1dbdf7730752bbde89ebb17d01bb30bf8f0 (patch)
treee82661b7eaaab7bde1934ddb05ecd9cdd9a2da60 /src/mutex_unix.c
parent0b8d255c37ea9830cecabb57f1c2ba6305eacc44 (diff)
downloadsqlite-6081c1dbdf7730752bbde89ebb17d01bb30bf8f0.tar.gz
sqlite-6081c1dbdf7730752bbde89ebb17d01bb30bf8f0.zip
Add a memory barrier to the mutex initialization logic, try to work around
an issue reported by WebKit. FossilOrigin-Name: 11a9a786ec06403addb47f5c6fb142b382fae522
Diffstat (limited to 'src/mutex_unix.c')
-rw-r--r--src/mutex_unix.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/mutex_unix.c b/src/mutex_unix.c
index 0a493fa6a..e181ba5bd 100644
--- a/src/mutex_unix.c
+++ b/src/mutex_unix.c
@@ -81,6 +81,18 @@ static int pthreadMutexNotheld(sqlite3_mutex *p){
#endif
/*
+** Try to provide a memory barrier operation, needed for initialization only.
+*/
+void sqlite3MemoryBarrier(void){
+#if defined(__GNUC__)
+ __sync_synchronize();
+#endif
+#ifdef SQLITE_MEMORY_BARRIER
+ SQLITE_MEMORY_BARRIER;
+#endif
+}
+
+/*
** Initialize and deinitialize the mutex subsystem.
*/
static int pthreadMutexInit(void){ return SQLITE_OK; }