aboutsummaryrefslogtreecommitdiff
path: root/src/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/util')
-rw-r--r--src/util/system.cpp12
-rw-r--r--src/util/threadnames.cpp7
-rw-r--r--src/util/threadnames.h5
-rw-r--r--src/util/time.h8
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)
*/