Remove hwrand_initialized.

All access to hwrand is now gated by GetRNGState, which initializes the hwrand code.
This commit is contained in:
Pieter Wuille 2018-12-17 16:22:22 -08:00
parent 9d7032e4f0
commit 4ea8e50837

View file

@ -76,7 +76,6 @@ static inline int64_t GetPerformanceCounter()
} }
#if defined(__x86_64__) || defined(__amd64__) || defined(__i386__) #if defined(__x86_64__) || defined(__amd64__) || defined(__i386__)
static std::atomic<bool> hwrand_initialized{false};
static bool rdrand_supported = false; static bool rdrand_supported = false;
static constexpr uint32_t CPUID_F1_ECX_RDRAND = 0x40000000; static constexpr uint32_t CPUID_F1_ECX_RDRAND = 0x40000000;
static void InitHardwareRand() static void InitHardwareRand()
@ -85,12 +84,10 @@ static void InitHardwareRand()
if (__get_cpuid(1, &eax, &ebx, &ecx, &edx) && (ecx & CPUID_F1_ECX_RDRAND)) { if (__get_cpuid(1, &eax, &ebx, &ecx, &edx) && (ecx & CPUID_F1_ECX_RDRAND)) {
rdrand_supported = true; rdrand_supported = true;
} }
hwrand_initialized.store(true);
} }
static void ReportHardwareRand() static void ReportHardwareRand()
{ {
assert(hwrand_initialized.load(std::memory_order_relaxed));
if (rdrand_supported) { if (rdrand_supported) {
// This must be done in a separate function, as HWRandInit() may be indirectly called // This must be done in a separate function, as HWRandInit() may be indirectly called
// from global constructors, before logging is initialized. // from global constructors, before logging is initialized.
@ -110,7 +107,6 @@ static void ReportHardwareRand() {}
static bool GetHardwareRand(unsigned char* ent32) { static bool GetHardwareRand(unsigned char* ent32) {
#if defined(__x86_64__) || defined(__amd64__) || defined(__i386__) #if defined(__x86_64__) || defined(__amd64__) || defined(__i386__)
assert(hwrand_initialized.load(std::memory_order_relaxed));
if (rdrand_supported) { if (rdrand_supported) {
uint8_t ok; uint8_t ok;
// Not all assemblers support the rdrand instruction, write it in hex. // Not all assemblers support the rdrand instruction, write it in hex.