From 271b05ab040837ce6fa5953a6d1d913de13fc11b Mon Sep 17 00:00:00 2001 From: Denis Ahrens Date: Sun, 2 Dec 2012 11:39:20 +0100 Subject: [PATCH] setting the name of the threads for linux,freebsd,openbsd and osx code is borrowed from bitcoins util.c, so it is already tested --- cgminer.c | 22 ++++++++++++++++++++++ util.c | 16 ++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/cgminer.c b/cgminer.c index c445c8e7..2e46bef2 100644 --- a/cgminer.c +++ b/cgminer.c @@ -3036,6 +3036,8 @@ static void *get_work_thread(void *userdata) pthread_detach(pthread_self()); + RenameThread("get_work"); + applog(LOG_DEBUG, "Creating extra get work thread"); retry: @@ -3219,6 +3221,8 @@ static void *submit_work_thread(void *userdata) pthread_detach(pthread_self()); + RenameThread("submit_work"); + applog(LOG_DEBUG, "Creating extra submit work thread"); check_solve(work); @@ -3662,6 +3666,8 @@ static void *stage_thread(void *userdata) pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); + RenameThread("stage"); + while (ok) { struct work *work = NULL; @@ -4341,6 +4347,8 @@ static void *input_thread(void __maybe_unused *userdata) { pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); + RenameThread("input"); + if (!curses_active) return NULL; @@ -4377,6 +4385,8 @@ static void *workio_thread(void *userdata) pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); + RenameThread("work_io"); + while (ok) { struct workio_cmd *wc; @@ -4416,6 +4426,8 @@ static void *api_thread(void *userdata) pthread_detach(pthread_self()); pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); + RenameThread("api"); + api(api_thr_id); PTH(mythr) = 0L; @@ -4662,6 +4674,8 @@ static void *stratum_thread(void *userdata) pthread_detach(pthread_self()); + RenameThread("stratum"); + while (42) { struct timeval timeout; fd_set rd; @@ -5495,6 +5509,8 @@ void *miner_thread(void *userdata) pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); + RenameThread("miner"); + gettimeofday(&getwork_start, NULL); if (api->thread_init && !api->thread_init(mythr)) { @@ -5750,6 +5766,8 @@ static void *longpoll_thread(void *userdata) char *lp_url; int rolltime; + RenameThread("longpoll"); + curl = curl_easy_init(); if (unlikely(!curl)) { applog(LOG_ERR, "CURL initialisation failed"); @@ -5941,6 +5959,8 @@ static void *watchpool_thread(void __maybe_unused *userdata) pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); + RenameThread("watchpool"); + while (42) { struct timeval now; int i; @@ -6012,6 +6032,8 @@ static void *watchdog_thread(void __maybe_unused *userdata) pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); + RenameThread("watchdog"); + memset(&zero_tv, 0, sizeof(struct timeval)); gettimeofday(&rotate_tv, NULL); diff --git a/util.c b/util.c index 9262f648..c4b065f3 100644 --- a/util.c +++ b/util.c @@ -1496,3 +1496,19 @@ void *realloc_strcat(char *ptr, char *s) free(ptr); return ret; } + +void RenameThread(const char* name) +{ +#if defined(PR_SET_NAME) + // Only the first 15 characters are used (16 - NUL terminator) + prctl(PR_SET_NAME, name, 0, 0, 0); +#elif (defined(__FreeBSD__) || defined(__OpenBSD__)) + pthread_set_name_np(pthread_self(), name); +#elif defined(MAC_OSX) + pthread_setname_np(name); +#else + // Prevent warnings for unused parameters... + (void)name; +#endif +} +