diff options
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/system.cpp | 12 | ||||
-rw-r--r-- | src/util/threadnames.cpp | 7 | ||||
-rw-r--r-- | src/util/threadnames.h | 5 | ||||
-rw-r--r-- | src/util/time.h | 8 |
4 files changed, 26 insertions, 6 deletions
diff --git a/src/util/system.cpp b/src/util/system.cpp index c925dec253..8098cde093 100644 --- a/src/util/system.cpp +++ b/src/util/system.cpp @@ -954,16 +954,18 @@ bool ArgsManager::ReadConfigFiles(std::string& error, bool ignore_invalid_keys) std::string ArgsManager::GetChainName() const { LOCK(cs_args); - bool fRegTest = ArgsManagerHelper::GetNetBoolArg(*this, "-regtest"); - bool fTestNet = ArgsManagerHelper::GetNetBoolArg(*this, "-testnet"); + const bool fRegTest = ArgsManagerHelper::GetNetBoolArg(*this, "-regtest"); + const bool fTestNet = ArgsManagerHelper::GetNetBoolArg(*this, "-testnet"); + const bool is_chain_arg_set = IsArgSet("-chain"); - if (fTestNet && fRegTest) - throw std::runtime_error("Invalid combination of -regtest and -testnet."); + if ((int)is_chain_arg_set + (int)fRegTest + (int)fTestNet > 1) { + throw std::runtime_error("Invalid combination of -regtest, -testnet and -chain. Can use at most one."); + } if (fRegTest) return CBaseChainParams::REGTEST; if (fTestNet) return CBaseChainParams::TESTNET; - return CBaseChainParams::MAIN; + return GetArg("-chain", CBaseChainParams::MAIN); } bool RenameOver(fs::path src, fs::path dest) diff --git a/src/util/threadnames.cpp b/src/util/threadnames.cpp index b221b0c975..168f9325d0 100644 --- a/src/util/threadnames.cpp +++ b/src/util/threadnames.cpp @@ -57,6 +57,11 @@ static void SetInternalName(std::string name) { } void util::ThreadRename(std::string&& name) { - SetThreadName(("bitcoin-" + name).c_str()); + SetThreadName(("b-" + name).c_str()); + SetInternalName(std::move(name)); +} + +void util::ThreadSetInternalName(std::string&& name) +{ SetInternalName(std::move(name)); } diff --git a/src/util/threadnames.h b/src/util/threadnames.h index aaf07b9bf8..69a1b55bfe 100644 --- a/src/util/threadnames.h +++ b/src/util/threadnames.h @@ -10,8 +10,13 @@ namespace util { //! Rename a thread both in terms of an internal (in-memory) name as well //! as its system thread name. +//! @note Do not call this for the main thread, as this will interfere with +//! UNIX utilities such as top and killall. Use ThreadSetInternalName instead. void ThreadRename(std::string&&); +//! Set the internal (in-memory) name of the current thread only. +void ThreadSetInternalName(std::string&&); + //! Get the thread's internal (in-memory) name; used e.g. for identification in //! logging. const std::string& ThreadGetInternalName(); diff --git a/src/util/time.h b/src/util/time.h index e4f9996777..c0470a2136 100644 --- a/src/util/time.h +++ b/src/util/time.h @@ -11,6 +11,14 @@ #include <chrono> /** + * Helper to count the seconds of a duration. + * + * All durations should be using std::chrono and calling this should generally be avoided in code. Though, it is still + * preferred to an inline t.count() to protect against a reliance on the exact type of t. + */ +inline int64_t count_seconds(std::chrono::seconds t) { return t.count(); } + +/** * DEPRECATED * Use either GetSystemTimeInSeconds (not mockable) or GetTime<T> (mockable) */ |