diff options
author | bunnei <bunneidev@gmail.com> | 2020-08-15 08:11:49 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-15 08:11:49 +0200 |
commit | cb6808b4d00f6742850f32464ea8a4403cfa7b63 (patch) | |
tree | 67638585b6f6b100c98e8078db523ca5fe55d5ca /src/core/hle/kernel | |
parent | Merge pull request #4463 from lioncash/lockdiscard (diff) | |
parent | system_control: Make functions internally linked where applicable (diff) | |
download | yuzu-cb6808b4d00f6742850f32464ea8a4403cfa7b63.tar yuzu-cb6808b4d00f6742850f32464ea8a4403cfa7b63.tar.gz yuzu-cb6808b4d00f6742850f32464ea8a4403cfa7b63.tar.bz2 yuzu-cb6808b4d00f6742850f32464ea8a4403cfa7b63.tar.lz yuzu-cb6808b4d00f6742850f32464ea8a4403cfa7b63.tar.xz yuzu-cb6808b4d00f6742850f32464ea8a4403cfa7b63.tar.zst yuzu-cb6808b4d00f6742850f32464ea8a4403cfa7b63.zip |
Diffstat (limited to 'src/core/hle/kernel')
-rw-r--r-- | src/core/hle/kernel/memory/system_control.cpp | 21 | ||||
-rw-r--r-- | src/core/hle/kernel/memory/system_control.h | 5 |
2 files changed, 11 insertions, 15 deletions
diff --git a/src/core/hle/kernel/memory/system_control.cpp b/src/core/hle/kernel/memory/system_control.cpp index 2f98e9c4c..11d204bc2 100644 --- a/src/core/hle/kernel/memory/system_control.cpp +++ b/src/core/hle/kernel/memory/system_control.cpp @@ -7,22 +7,15 @@ #include "core/hle/kernel/memory/system_control.h" namespace Kernel::Memory::SystemControl { - -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); -} - +namespace { template <typename 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()) { 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 effective_max = (std::numeric_limits<u64>::max() / range_size) * range_size; 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) { return GenerateUniformRange(min, max, GenerateRandomU64ForInit); } diff --git a/src/core/hle/kernel/memory/system_control.h b/src/core/hle/kernel/memory/system_control.h index 3fa93111d..19cab8cbc 100644 --- a/src/core/hle/kernel/memory/system_control.h +++ b/src/core/hle/kernel/memory/system_control.h @@ -8,11 +8,6 @@ namespace Kernel::Memory::SystemControl { -u64 GenerateRandomU64ForInit(); - -template <typename F> -u64 GenerateUniformRange(u64 min, u64 max, F f); - u64 GenerateRandomRange(u64 min, u64 max); } // namespace Kernel::Memory::SystemControl |