Merge pull request #4492 from lioncash/linkage

system_control: Make functions internally linked where applicable
This commit is contained in:
bunnei 2020-08-15 02:11:49 -04:00 committed by GitHub
commit cb6808b4d0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 15 deletions

View file

@ -7,22 +7,15 @@
#include "core/hle/kernel/memory/system_control.h" #include "core/hle/kernel/memory/system_control.h"
namespace Kernel::Memory::SystemControl { namespace Kernel::Memory::SystemControl {
namespace {
u64 GenerateRandomU64ForInit() {
static std::random_device device;
static std::mt19937 gen(device());
static std::uniform_int_distribution<u64> distribution(1, std::numeric_limits<u64>::max());
return distribution(gen);
}
template <typename F> template <typename F>
u64 GenerateUniformRange(u64 min, u64 max, F f) { u64 GenerateUniformRange(u64 min, u64 max, F f) {
/* Handle the case where the difference is too large to represent. */ // Handle the case where the difference is too large to represent.
if (max == std::numeric_limits<u64>::max() && min == std::numeric_limits<u64>::min()) { if (max == std::numeric_limits<u64>::max() && min == std::numeric_limits<u64>::min()) {
return f(); return f();
} }
/* Iterate until we get a value in range. */ // Iterate until we get a value in range.
const u64 range_size = ((max + 1) - min); const u64 range_size = ((max + 1) - min);
const u64 effective_max = (std::numeric_limits<u64>::max() / range_size) * range_size; const u64 effective_max = (std::numeric_limits<u64>::max() / range_size) * range_size;
while (true) { while (true) {
@ -32,6 +25,14 @@ u64 GenerateUniformRange(u64 min, u64 max, F f) {
} }
} }
u64 GenerateRandomU64ForInit() {
static std::random_device device;
static std::mt19937 gen(device());
static std::uniform_int_distribution<u64> distribution(1, std::numeric_limits<u64>::max());
return distribution(gen);
}
} // Anonymous namespace
u64 GenerateRandomRange(u64 min, u64 max) { u64 GenerateRandomRange(u64 min, u64 max) {
return GenerateUniformRange(min, max, GenerateRandomU64ForInit); return GenerateUniformRange(min, max, GenerateRandomU64ForInit);
} }

View file

@ -8,11 +8,6 @@
namespace Kernel::Memory::SystemControl { namespace Kernel::Memory::SystemControl {
u64 GenerateRandomU64ForInit();
template <typename F>
u64 GenerateUniformRange(u64 min, u64 max, F f);
u64 GenerateRandomRange(u64 min, u64 max); u64 GenerateRandomRange(u64 min, u64 max);
} // namespace Kernel::Memory::SystemControl } // namespace Kernel::Memory::SystemControl