From 190bf62be1214b072513c7fd7e01cc191723967c Mon Sep 17 00:00:00 2001
From: Russell Yanofsky <russ@yanofsky.org>
Date: Fri, 3 Nov 2017 07:49:16 -0400
Subject: [PATCH] scripted-diff: Small locking rename

Call sync.h primitives "locks" and "mutexes" instead of "blocks" and "waitable
critical sections" to match current coding conventions and c++11 standard
names.

This PR does not rename the "CCriticalSection" class (though this could be done
as a followup) because it is used everywhere and would swamp the other changes
in this PR. Plain mutexes should mostly be preferred instead of recursive
mutexes in new code anyway.

-BEGIN VERIFY SCRIPT-
set -x
set -e
ren() { git grep -l $1 | xargs sed -i s/$1/$2/; }
ren CCriticalBlock           UniqueLock
ren CWaitableCriticalSection Mutex
ren CConditionVariable       std::condition_variable
ren cs_GenesisWait           g_genesis_wait_mutex
ren condvar_GenesisWait      g_genesis_wait_cv
perl -0777 -pi -e 's/.*typedef.*condition_variable.*\n\n?//g' src/sync.h
-END VERIFY SCRIPT-
---
 src/httpserver.cpp      |  2 +-
 src/init.cpp            | 12 ++++++------
 src/net.h               |  2 +-
 src/random.cpp          |  2 +-
 src/rpc/blockchain.cpp  |  2 +-
 src/sync.h              | 15 ++++++---------
 src/test/sync_tests.cpp |  2 +-
 src/threadinterrupt.h   |  2 +-
 src/validation.cpp      |  4 ++--
 src/validation.h        |  4 ++--
 10 files changed, 22 insertions(+), 25 deletions(-)

diff --git a/src/httpserver.cpp b/src/httpserver.cpp
index 200fcad61..326f7f6b6 100644
--- a/src/httpserver.cpp
+++ b/src/httpserver.cpp
@@ -69,7 +69,7 @@ class WorkQueue
 {
 private:
     /** Mutex protects entire object */
-    CWaitableCriticalSection cs;
+    Mutex cs;
     std::condition_variable cond;
     std::deque<std::unique_ptr<WorkItem>> queue;
     bool running;
diff --git a/src/init.cpp b/src/init.cpp
index 11b36a46e..27966319d 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -561,17 +561,17 @@ static void BlockNotifyCallback(bool initialSync, const CBlockIndex *pBlockIndex
 }
 
 static bool fHaveGenesis = false;
-static CWaitableCriticalSection cs_GenesisWait;
-static CConditionVariable condvar_GenesisWait;
+static Mutex g_genesis_wait_mutex;
+static std::condition_variable g_genesis_wait_cv;
 
 static void BlockNotifyGenesisWait(bool, const CBlockIndex *pBlockIndex)
 {
     if (pBlockIndex != nullptr) {
         {
-            LOCK(cs_GenesisWait);
+            LOCK(g_genesis_wait_mutex);
             fHaveGenesis = true;
         }
-        condvar_GenesisWait.notify_all();
+        g_genesis_wait_cv.notify_all();
     }
 }
 
@@ -1661,12 +1661,12 @@ bool AppInitMain()
 
     // Wait for genesis block to be processed
     {
-        WAIT_LOCK(cs_GenesisWait, lock);
+        WAIT_LOCK(g_genesis_wait_mutex, lock);
         // We previously could hang here if StartShutdown() is called prior to
         // ThreadImport getting started, so instead we just wait on a timer to
         // check ShutdownRequested() regularly.
         while (!fHaveGenesis && !ShutdownRequested()) {
-            condvar_GenesisWait.wait_for(lock, std::chrono::milliseconds(500));
+            g_genesis_wait_cv.wait_for(lock, std::chrono::milliseconds(500));
         }
         uiInterface.NotifyBlockTip_disconnect(BlockNotifyGenesisWait);
     }
diff --git a/src/net.h b/src/net.h
index a5afe6ccf..9f6c426ab 100644
--- a/src/net.h
+++ b/src/net.h
@@ -427,7 +427,7 @@ private:
     bool fMsgProcWake;
 
     std::condition_variable condMsgProc;
-    CWaitableCriticalSection mutexMsgProc;
+    Mutex mutexMsgProc;
     std::atomic<bool> flagInterruptMsgProc;
 
     CThreadInterrupt interruptNet;
diff --git a/src/random.cpp b/src/random.cpp
index df7265a96..503d5b363 100644
--- a/src/random.cpp
+++ b/src/random.cpp
@@ -296,7 +296,7 @@ void RandAddSeedSleep()
 }
 
 
-static CWaitableCriticalSection cs_rng_state;
+static Mutex cs_rng_state;
 static unsigned char rng_state[32] = {0};
 static uint64_t rng_counter = 0;
 
diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp
index 5b9369895..f0d767bbf 100644
--- a/src/rpc/blockchain.cpp
+++ b/src/rpc/blockchain.cpp
@@ -50,7 +50,7 @@ struct CUpdatedBlock
     int height;
 };
 
-static CWaitableCriticalSection cs_blockchange;
+static Mutex cs_blockchange;
 static std::condition_variable cond_blockchange;
 static CUpdatedBlock latestblock;
 
diff --git a/src/sync.h b/src/sync.h
index 0263816c3..40709bdd7 100644
--- a/src/sync.h
+++ b/src/sync.h
@@ -107,10 +107,7 @@ public:
 typedef AnnotatedMixin<std::recursive_mutex> CCriticalSection;
 
 /** Wrapped mutex: supports waiting but not recursive locking */
-typedef AnnotatedMixin<std::mutex> CWaitableCriticalSection;
-
-/** Just a typedef for std::condition_variable, can be wrapped later if desired */
-typedef std::condition_variable CConditionVariable;
+typedef AnnotatedMixin<std::mutex> Mutex;
 
 #ifdef DEBUG_LOCKCONTENTION
 void PrintLockContention(const char* pszName, const char* pszFile, int nLine);
@@ -118,7 +115,7 @@ void PrintLockContention(const char* pszName, const char* pszFile, int nLine);
 
 /** Wrapper around std::unique_lock style lock for Mutex. */
 template <typename Mutex, typename Base = typename Mutex::UniqueLock>
-class SCOPED_LOCKABLE CCriticalBlock : public Base
+class SCOPED_LOCKABLE UniqueLock : public Base
 {
 private:
     void Enter(const char* pszName, const char* pszFile, int nLine)
@@ -144,7 +141,7 @@ private:
     }
 
 public:
-    CCriticalBlock(Mutex& mutexIn, const char* pszName, const char* pszFile, int nLine, bool fTry = false) EXCLUSIVE_LOCK_FUNCTION(mutexIn) : Base(mutexIn, std::defer_lock)
+    UniqueLock(Mutex& mutexIn, const char* pszName, const char* pszFile, int nLine, bool fTry = false) EXCLUSIVE_LOCK_FUNCTION(mutexIn) : Base(mutexIn, std::defer_lock)
     {
         if (fTry)
             TryEnter(pszName, pszFile, nLine);
@@ -152,7 +149,7 @@ public:
             Enter(pszName, pszFile, nLine);
     }
 
-    CCriticalBlock(Mutex* pmutexIn, const char* pszName, const char* pszFile, int nLine, bool fTry = false) EXCLUSIVE_LOCK_FUNCTION(pmutexIn)
+    UniqueLock(Mutex* pmutexIn, const char* pszName, const char* pszFile, int nLine, bool fTry = false) EXCLUSIVE_LOCK_FUNCTION(pmutexIn)
     {
         if (!pmutexIn) return;
 
@@ -163,7 +160,7 @@ public:
             Enter(pszName, pszFile, nLine);
     }
 
-    ~CCriticalBlock() UNLOCK_FUNCTION()
+    ~UniqueLock() UNLOCK_FUNCTION()
     {
         if (Base::owns_lock())
             LeaveCritical();
@@ -176,7 +173,7 @@ public:
 };
 
 template<typename MutexArg>
-using DebugLock = CCriticalBlock<typename std::remove_reference<typename std::remove_pointer<MutexArg>::type>::type>;
+using DebugLock = UniqueLock<typename std::remove_reference<typename std::remove_pointer<MutexArg>::type>::type>;
 
 #define PASTE(x, y) x ## y
 #define PASTE2(x, y) PASTE(x, y)
diff --git a/src/test/sync_tests.cpp b/src/test/sync_tests.cpp
index 539e2ff3a..df0380546 100644
--- a/src/test/sync_tests.cpp
+++ b/src/test/sync_tests.cpp
@@ -41,7 +41,7 @@ BOOST_AUTO_TEST_CASE(potential_deadlock_detected)
     CCriticalSection rmutex1, rmutex2;
     TestPotentialDeadLockDetected(rmutex1, rmutex2);
 
-    CWaitableCriticalSection mutex1, mutex2;
+    Mutex mutex1, mutex2;
     TestPotentialDeadLockDetected(mutex1, mutex2);
 
     #ifdef DEBUG_LOCKORDER
diff --git a/src/threadinterrupt.h b/src/threadinterrupt.h
index a37da956e..9c6fccfcd 100644
--- a/src/threadinterrupt.h
+++ b/src/threadinterrupt.h
@@ -30,7 +30,7 @@ public:
 
 private:
     std::condition_variable cond;
-    CWaitableCriticalSection mut;
+    Mutex mut;
     std::atomic<bool> flag;
 };
 
diff --git a/src/validation.cpp b/src/validation.cpp
index b71b0782c..a9eea5edd 100644
--- a/src/validation.cpp
+++ b/src/validation.cpp
@@ -217,8 +217,8 @@ CCriticalSection cs_main;
 BlockMap& mapBlockIndex = g_chainstate.mapBlockIndex;
 CChain& chainActive = g_chainstate.chainActive;
 CBlockIndex *pindexBestHeader = nullptr;
-CWaitableCriticalSection g_best_block_mutex;
-CConditionVariable g_best_block_cv;
+Mutex g_best_block_mutex;
+std::condition_variable g_best_block_cv;
 uint256 g_best_block;
 int nScriptCheckThreads = 0;
 std::atomic_bool fImporting(false);
diff --git a/src/validation.h b/src/validation.h
index c4c9b8b5b..3df6456ec 100644
--- a/src/validation.h
+++ b/src/validation.h
@@ -151,8 +151,8 @@ extern BlockMap& mapBlockIndex;
 extern uint64_t nLastBlockTx;
 extern uint64_t nLastBlockWeight;
 extern const std::string strMessageMagic;
-extern CWaitableCriticalSection g_best_block_mutex;
-extern CConditionVariable g_best_block_cv;
+extern Mutex g_best_block_mutex;
+extern std::condition_variable g_best_block_cv;
 extern uint256 g_best_block;
 extern std::atomic_bool fImporting;
 extern std::atomic_bool fReindex;