diff options
author | sapier <Sapier at GMX dot net> | 2014-04-05 15:27:33 +0200 |
---|---|---|
committer | sapier <Sapier at GMX dot net> | 2014-04-09 21:32:21 +0200 |
commit | edcad09dee6daf119f3e29b0a63837500e7b8b85 (patch) | |
tree | 892d763fd20e03d24430565a3883212ef5c1494f | |
parent | d22621efc10859ae68f51fdcb83da422668dfc91 (diff) | |
download | minetest-edcad09dee6daf119f3e29b0a63837500e7b8b85.tar.gz minetest-edcad09dee6daf119f3e29b0a63837500e7b8b85.tar.bz2 minetest-edcad09dee6daf119f3e29b0a63837500e7b8b85.zip |
Add support for named threads (atm linux only)
-rw-r--r-- | src/client.cpp | 4 | ||||
-rw-r--r-- | src/connection.cpp | 4 | ||||
-rw-r--r-- | src/emerge.cpp | 2 | ||||
-rw-r--r-- | src/httpfetch.cpp | 2 | ||||
-rw-r--r-- | src/porting.h | 20 | ||||
-rw-r--r-- | src/script/lua_api/l_async_events.cpp | 3 | ||||
-rw-r--r-- | src/server.cpp | 2 |
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{ |