Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
util
threadnames.cpp
Go to the documentation of this file.
1
// Copyright (c) 2018-present The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#include <cstring>
6
#include <string>
7
#include <thread>
8
#include <utility>
9
10
#if (defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__))
11
#include <pthread.h>
12
#include <pthread_np.h>
13
#endif
14
15
#include <
util/threadnames.h
>
16
17
#if __has_include(<sys/prctl.h>)
18
#include <sys/prctl.h>
19
#endif
20
23
static
void
SetThreadName
(
const
char
*
name
)
24
{
25
#if defined(PR_SET_NAME)
26
// Only the first 15 characters are used (16 - NUL terminator)
27
::prctl(PR_SET_NAME,
name
, 0, 0, 0);
28
#elif (defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__))
29
pthread_set_name_np(pthread_self(),
name
);
30
#elif defined(__APPLE__)
31
pthread_setname_np(
name
);
32
#else
33
// Prevent warnings for unused parameters...
34
(void)
name
;
35
#endif
36
}
37
44
static
thread_local
char
g_thread_name
[128]{
'\0'
};
45
std::string
util::ThreadGetInternalName
() {
return
g_thread_name
; }
48
static
void
SetInternalName
(
const
std::string&
name
)
49
{
50
const
size_t
copy_bytes{std::min(
sizeof
(
g_thread_name
) - 1,
name
.length())};
51
std::memcpy(
g_thread_name
,
name
.data(), copy_bytes);
52
g_thread_name
[copy_bytes] =
'\0'
;
53
}
54
55
void
util::ThreadRename
(
const
std::string&
name
)
56
{
57
SetThreadName
((
"b-"
+
name
).c_str());
58
SetInternalName
(
name
);
59
}
60
61
void
util::ThreadSetInternalName
(
const
std::string&
name
)
62
{
63
SetInternalName
(
name
);
64
}
util::ThreadRename
void ThreadRename(const std::string &)
Definition
threadnames.cpp:55
util::ThreadGetInternalName
std::string ThreadGetInternalName()
Definition
threadnames.cpp:45
util::ThreadSetInternalName
void ThreadSetInternalName(const std::string &)
Set the internal (in-memory) name of the current thread only.
Definition
threadnames.cpp:61
name
const char * name
Definition
rest.cpp:48
g_thread_name
static char g_thread_name[128]
The name of the thread.
Definition
threadnames.cpp:44
SetInternalName
static void SetInternalName(const std::string &name)
Definition
threadnames.cpp:48
SetThreadName
static void SetThreadName(const char *name)
Definition
threadnames.cpp:23
threadnames.h
Generated on
for Bitcoin Core by
1.17.0