system.h raw

   1  // Copyright (c) 2009-2010 Satoshi Nakamoto
   2  // Copyright (c) 2009-present The Bitcoin Core developers
   3  // Distributed under the MIT software license, see the accompanying
   4  // file COPYING or http://www.opensource.org/licenses/mit-license.php.
   5  
   6  #ifndef BITCOIN_COMMON_SYSTEM_H
   7  #define BITCOIN_COMMON_SYSTEM_H
   8  
   9  #include <bitcoin-build-config.h> // IWYU pragma: keep
  10  #include <util/time.h>
  11  
  12  #include <chrono>
  13  #include <cstdint>
  14  #include <optional>
  15  #include <string>
  16  
  17  /// Monotonic uptime (not affected by system time changes).
  18  SteadyClock::duration GetUptime();
  19  
  20  void SetupEnvironment();
  21  [[nodiscard]] bool SetupNetworking();
  22  #ifndef WIN32
  23  std::string ShellEscape(const std::string& arg);
  24  #endif
  25  #if HAVE_SYSTEM
  26  void runCommand(const std::string& strCommand);
  27  #endif
  28  
  29  /**
  30   * Return the number of cores available on the current system.
  31   * @note This does count virtual cores, such as those provided by HyperThreading.
  32   */
  33  int GetNumCores();
  34  
  35  /**
  36   * Return the total RAM available on the current system, if detectable.
  37   */
  38  std::optional<size_t> GetTotalRAM();
  39  
  40  #endif // BITCOIN_COMMON_SYSTEM_H
  41