aboutsummaryrefslogtreecommitdiff
path: root/src/util/threadnames.h
diff options
context:
space:
mode:
authorJames O'Beirne <james.obeirne@gmail.com>2018-06-13 14:50:59 -0400
committerJames O'Beirne <james.obeirne@gmail.com>2019-04-29 13:42:25 -0400
commitae5f2b6a6cc7b2260e9dff99c1bf378922e0e988 (patch)
tree6646e4d0936dc2217a10b3972fb9250f5beaadc9 /src/util/threadnames.h
parent188ca75e5fe4837d16241446558c7566912f67b2 (diff)
downloadbitcoin-ae5f2b6a6cc7b2260e9dff99c1bf378922e0e988.tar.xz
threads: introduce util/threadnames, refactor thread naming
This work is prerequisite to attaching thread names to log lines and deadlock debug utilities. This code allows setting of an "internal" threadname per thread on platforms where thread_local is available. This commit also moves RenameThread() out of a more general module and adds a numeric suffix to disambiguate between threads with the same name. It explicitly names a few main threads using the new util::ThreadRename().
Diffstat (limited to 'src/util/threadnames.h')
-rw-r--r--src/util/threadnames.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/util/threadnames.h b/src/util/threadnames.h
new file mode 100644
index 0000000000..aaf07b9bf8
--- /dev/null
+++ b/src/util/threadnames.h
@@ -0,0 +1,21 @@
+// Copyright (c) 2018 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_THREADNAMES_H
+#define BITCOIN_UTIL_THREADNAMES_H
+
+#include <string>
+
+namespace util {
+//! Rename a thread both in terms of an internal (in-memory) name as well
+//! as its system thread name.
+void ThreadRename(std::string&&);
+
+//! Get the thread's internal (in-memory) name; used e.g. for identification in
+//! logging.
+const std::string& ThreadGetInternalName();
+
+} // namespace util
+
+#endif // BITCOIN_UTIL_THREADNAMES_H