aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell Yanofsky <russ@yanofsky.org>2017-11-03 07:49:16 -0400
committerRussell Yanofsky <russ@yanofsky.org>2018-08-31 10:00:38 -0400
commit190bf62be1214b072513c7fd7e01cc191723967c (patch)
treeaeece6f0d62abfa11a70875d120350f0374cabee
parent385ad110400bc9646dcf2e38b64b7080182a7344 (diff)
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-
-rw-r--r--src/httpserver.cpp2
-rw-r--r--src/init.cpp12
-rw-r--r--src/net.h2
-rw-r--r--src/random.cpp2
-rw-r--r--src/rpc/blockchain.cpp2
-rw-r--r--src/sync.h15
-rw-r--r--src/test/sync_tests.cpp2
-rw-r--r--src/threadinterrupt.h2
-rw-r--r--src/validation.cpp4
-rw-r--r--src/validation.h4
10 files changed, 22 insertions, 25 deletions
diff --git a/src/httpserver.cpp b/src/httpserver.cpp
index 200fcad614..326f7f6b64 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 11b36a46e1..27966319d6 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 a5afe6ccfc..9f6c426ab7 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 df7265a963..503d5b3636 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 5b93698951..f0d767bbfc 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 0263816c39..40709bdd7f 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 539e2ff3ab..df0380546e 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 a37da956e5..9c6fccfcde 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 b71b0782c3..a9eea5edd9 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 c4c9b8b5ba..3df6456eca 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;