mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-18 22:35:39 +01:00
Merge #11640: Make LOCK, LOCK2, TRY_LOCK work with CWaitableCriticalSection
9c4dc597ddUse LOCK macros for non-recursive locks (Russell Yanofsky)1382913e61Make LOCK, LOCK2, TRY_LOCK work with CWaitableCriticalSection (Russell Yanofsky)ba1f095aadMOVEONLY Move AnnotatedMixin declaration (Russell Yanofsky)41b88e9337Add unit test for DEBUG_LOCKORDER code (Russell Yanofsky) Pull request description: Make LOCK macros work with non-recursive mutexes, and use wherever possible for better deadlock detection. Also add unit test for DEBUG_LOCKORDER code. Tree-SHA512: 64ef209307f28ecd0813a283f15c6406138c6ffe7f6cbbd084161044db60e2c099a7d0d2edcd1c5e7770a115e9b931b486e86c9a777bdc96d2e8a9f4dc192942
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
#include <wincrypt.h>
|
||||
#endif
|
||||
#include <logging.h> // for LogPrint()
|
||||
#include <sync.h> // for WAIT_LOCK
|
||||
#include <utiltime.h> // for GetTime()
|
||||
|
||||
#include <stdlib.h>
|
||||
@@ -295,7 +296,7 @@ void RandAddSeedSleep()
|
||||
}
|
||||
|
||||
|
||||
static std::mutex cs_rng_state;
|
||||
static CWaitableCriticalSection cs_rng_state;
|
||||
static unsigned char rng_state[32] = {0};
|
||||
static uint64_t rng_counter = 0;
|
||||
|
||||
@@ -305,7 +306,7 @@ static void AddDataToRng(void* data, size_t len) {
|
||||
hasher.Write((const unsigned char*)data, len);
|
||||
unsigned char buf[64];
|
||||
{
|
||||
std::unique_lock<std::mutex> lock(cs_rng_state);
|
||||
WAIT_LOCK(cs_rng_state, lock);
|
||||
hasher.Write(rng_state, sizeof(rng_state));
|
||||
hasher.Write((const unsigned char*)&rng_counter, sizeof(rng_counter));
|
||||
++rng_counter;
|
||||
@@ -337,7 +338,7 @@ void GetStrongRandBytes(unsigned char* out, int num)
|
||||
|
||||
// Combine with and update state
|
||||
{
|
||||
std::unique_lock<std::mutex> lock(cs_rng_state);
|
||||
WAIT_LOCK(cs_rng_state, lock);
|
||||
hasher.Write(rng_state, sizeof(rng_state));
|
||||
hasher.Write((const unsigned char*)&rng_counter, sizeof(rng_counter));
|
||||
++rng_counter;
|
||||
|
||||
Reference in New Issue
Block a user