mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-19 06:43:45 +01:00
This is an extraction of ArgsManager related functions from util/system into their own common file. Config file related functions are moved to common/config.cpp. The background of this commit is an ongoing effort to decouple the libbitcoinkernel library from the ArgsManager. The ArgsManager belongs into the common library, since the kernel library should not depend on it. See doc/design/libraries.md for more information on this rationale.
73 lines
1.8 KiB
C++
73 lines
1.8 KiB
C++
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
|
// Copyright (c) 2009-2022 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#ifndef BITCOIN_UTIL_SYSTEM_H
|
|
#define BITCOIN_UTIL_SYSTEM_H
|
|
|
|
#if defined(HAVE_CONFIG_H)
|
|
#include <config/bitcoin-config.h>
|
|
#endif
|
|
|
|
#include <compat/assumptions.h>
|
|
#include <compat/compat.h>
|
|
|
|
#include <any>
|
|
#include <set>
|
|
#include <stdint.h>
|
|
#include <string>
|
|
|
|
// Application startup time (used for uptime calculation)
|
|
int64_t GetStartupTime();
|
|
|
|
void SetupEnvironment();
|
|
bool SetupNetworking();
|
|
#ifndef WIN32
|
|
std::string ShellEscape(const std::string& arg);
|
|
#endif
|
|
#if HAVE_SYSTEM
|
|
void runCommand(const std::string& strCommand);
|
|
#endif
|
|
|
|
/**
|
|
* Return the number of cores available on the current system.
|
|
* @note This does count virtual cores, such as those provided by HyperThreading.
|
|
*/
|
|
int GetNumCores();
|
|
|
|
/**
|
|
* On platforms that support it, tell the kernel the calling thread is
|
|
* CPU-intensive and non-interactive. See SCHED_BATCH in sched(7) for details.
|
|
*
|
|
*/
|
|
void ScheduleBatchPriority();
|
|
|
|
namespace util {
|
|
|
|
//! Simplification of std insertion
|
|
template <typename Tdst, typename Tsrc>
|
|
inline void insert(Tdst& dst, const Tsrc& src) {
|
|
dst.insert(dst.begin(), src.begin(), src.end());
|
|
}
|
|
template <typename TsetT, typename Tsrc>
|
|
inline void insert(std::set<TsetT>& dst, const Tsrc& src) {
|
|
dst.insert(src.begin(), src.end());
|
|
}
|
|
|
|
/**
|
|
* Helper function to access the contained object of a std::any instance.
|
|
* Returns a pointer to the object if passed instance has a value and the type
|
|
* matches, nullptr otherwise.
|
|
*/
|
|
template<typename T>
|
|
T* AnyPtr(const std::any& any) noexcept
|
|
{
|
|
T* const* ptr = std::any_cast<T*>(&any);
|
|
return ptr ? *ptr : nullptr;
|
|
}
|
|
|
|
} // namespace util
|
|
|
|
#endif // BITCOIN_UTIL_SYSTEM_H
|