forked from Mirrorlandia_minetest/minetest
Add support for named threads (atm linux only)
This commit is contained in:
parent
d22621efc1
commit
edcad09dee
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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)) {
|
||||
|
@ -566,6 +566,8 @@ protected:
|
||||
log_register_thread("CurlFetchThread");
|
||||
DSTACK(__FUNCTION_NAME);
|
||||
|
||||
porting::setThreadName("CurlFetchThread");
|
||||
|
||||
CurlHandlePool pool;
|
||||
|
||||
m_multi = curl_multi_init();
|
||||
|
@ -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
|
||||
|
||||
|
@ -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");
|
||||
|
@ -99,6 +99,8 @@ void * ServerThread::Thread()
|
||||
|
||||
ThreadStarted();
|
||||
|
||||
porting::setThreadName("ServerThread");
|
||||
|
||||
while(!StopRequested())
|
||||
{
|
||||
try{
|
||||
|
Loading…
Reference in New Issue
Block a user