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