diff options
| author | Lioncash <mathew1800@gmail.com> | 2020-08-05 15:33:09 -0400 | 
|---|---|---|
| committer | Lioncash <mathew1800@gmail.com> | 2020-08-05 15:34:27 -0400 | 
| commit | 87c64c41d234019d9994f6c83c6fe656a1ab13c3 (patch) | |
| tree | 3c3bfdb80f2d9e1c4e5ce12d98d5f36c14340324 /src/core/hle | |
| parent | 07691f994a30af375d68b5c9e7701d97c23b17a6 (diff) | |
system_control: Make functions internally linked where applicable
These functions are only ever used internally as implementation details
for GenerateRandomRange(), so these can be given internal linkage.
Diffstat (limited to 'src/core/hle')
| -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 | 
