aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsapier <Sapier at GMX dot net>2014-04-05 15:27:33 +0200
committersapier <Sapier at GMX dot net>2014-04-09 21:32:21 +0200
commitedcad09dee6daf119f3e29b0a63837500e7b8b85 (patch)
tree892d763fd20e03d24430565a3883212ef5c1494f
parentd22621efc10859ae68f51fdcb83da422668dfc91 (diff)
downloadminetest-edcad09dee6daf119f3e29b0a63837500e7b8b85.tar.gz
minetest-edcad09dee6daf119f3e29b0a63837500e7b8b85.tar.bz2
minetest-edcad09dee6daf119f3e29b0a63837500e7b8b85.zip
Add support for named threads (atm linux only)
-rw-r--r--src/client.cpp4
-rw-r--r--src/connection.cpp4
-rw-r--r--src/emerge.cpp2
-rw-r--r--src/httpfetch.cpp2
-rw-r--r--src/porting.h20
-rw-r--r--src/script/lua_api/l_async_events.cpp3
-rw-r--r--src/server.cpp2
7 files changed, 36 insertions, 1 deletions
diff --git a/src/client.cpp b/src/client.cpp
index 5b3ebed66..56f55ef6c 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -169,6 +169,8 @@ void * MeshUpdateThread::Thread()
BEGIN_DEBUG_EXCEPTION_HANDLER
+ porting::setThreadName("MeshUpdateThread");
+
while(!StopRequested())
{
QueuedMeshUpdate *q = m_queue_in.pop();
@@ -1212,7 +1214,7 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
m_time_of_day_set = true;
u32 dr = m_env.getDayNightRatio();
- verbosestream<<"Client: time_of_day="<<time_of_day
+ infostream<<"Client: time_of_day="<<time_of_day
<<" time_speed="<<time_speed
<<" dr="<<dr<<std::endl;
}
diff --git a/src/connection.cpp b/src/connection.cpp
index 290e2cb21..c77ee7f4d 100644
--- a/src/connection.cpp
+++ b/src/connection.cpp
@@ -1227,6 +1227,8 @@ void * ConnectionSendThread::Thread()
PROFILE(std::stringstream ThreadIdentifier);
PROFILE(ThreadIdentifier << "ConnectionSend: [" << m_connection->getDesc() << "]");
+ porting::setThreadName("ConnectionSend");
+
/* if stop is requested don't stop immediately but try to send all */
/* packets first */
while(!StopRequested() || packetsQueued()) {
@@ -1955,6 +1957,8 @@ void * ConnectionReceiveThread::Thread()
PROFILE(std::stringstream ThreadIdentifier);
PROFILE(ThreadIdentifier << "ConnectionReceive: [" << m_connection->getDesc() << "]");
+ porting::setThreadName("ConnectionReceive");
+
#ifdef DEBUG_CONNECTION_KBPS
u32 curtime = porting::getTimeMs();
u32 lasttime = curtime;
diff --git a/src/emerge.cpp b/src/emerge.cpp
index 0e805c95a..c26fab837 100644
--- a/src/emerge.cpp
+++ b/src/emerge.cpp
@@ -472,6 +472,8 @@ void *EmergeThread::Thread() {
mapgen = emerge->mapgen[id];
enable_mapgen_debug_info = emerge->mapgen_debug_info;
+ porting::setThreadName("EmergeThread");
+
while (!StopRequested())
try {
if (!popBlockEmerge(&p, &flags)) {
diff --git a/src/httpfetch.cpp b/src/httpfetch.cpp
index 2eca363d7..751a4471a 100644
--- a/src/httpfetch.cpp
+++ b/src/httpfetch.cpp
@@ -566,6 +566,8 @@ protected:
log_register_thread("CurlFetchThread");
DSTACK(__FUNCTION_NAME);
+ porting::setThreadName("CurlFetchThread");
+
CurlHandlePool pool;
m_multi = curl_multi_init();
diff --git a/src/porting.h b/src/porting.h
index c03ae40aa..5739b6876 100644
--- a/src/porting.h
+++ b/src/porting.h
@@ -266,6 +266,26 @@ inline u32 getTime(TimePrecision prec)
return 0;
}
+#if (defined(linux) || defined(__linux))
+
+#include <sys/prctl.h>
+
+inline void setThreadName(const char* name) {
+ prctl(PR_SET_NAME,name);
+}
+#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
+/* BSD doesn't seem to support thread names. If you know about a way
+ * to add this feature please create a pull request.
+ * "setproctitle" doesn't work for threadnames.
+ */
+#define setThreadName(a)
+#elif defined(_WIN32)
+// threadnames are not supported on windows
+#define setThreadName(a)
+#else
+#warning "Unknown platform for setThreadName support, you wont have threadname support."
+#define setThreadName(a)
+#endif
} // namespace porting
diff --git a/src/script/lua_api/l_async_events.cpp b/src/script/lua_api/l_async_events.cpp
index 2425f22b2..f5c27a235 100644
--- a/src/script/lua_api/l_async_events.cpp
+++ b/src/script/lua_api/l_async_events.cpp
@@ -262,6 +262,9 @@ void* AsyncWorkerThread::worker_thread_main() {
snprintf(number,sizeof(number),"%d",m_threadnum);
log_register_thread(std::string("AsyncWorkerThread_") + number);
+ porting::setThreadName(
+ std::string(std::string("AsyncWorkTh_") + number).c_str());
+
/** prepare job lua environment **/
lua_newtable(m_LuaStack);
lua_setglobal(m_LuaStack, "engine");
diff --git a/src/server.cpp b/src/server.cpp
index ebb76b087..0cd8630c3 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -99,6 +99,8 @@ void * ServerThread::Thread()
ThreadStarted();
+ porting::setThreadName("ServerThread");
+
while(!StopRequested())
{
try{