diff options
author | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-08 23:39:06 +0000 |
---|---|---|
committer | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-08 23:39:06 +0000 |
commit | 1b9c01fef349b0721f65248ae9f762e47218af95 (patch) | |
tree | c04c91860c5dc032c1978246bace851a18d1a40d /base | |
parent | be595106fde488c301f33742df0a61100b2cce75 (diff) | |
download | chromium_src-1b9c01fef349b0721f65248ae9f762e47218af95.zip chromium_src-1b9c01fef349b0721f65248ae9f762e47218af95.tar.gz chromium_src-1b9c01fef349b0721f65248ae9f762e47218af95.tar.bz2 |
Revert "posix: set thread names"
This reverts commit r49212.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@49214 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r-- | base/platform_thread_mac.mm | 21 | ||||
-rw-r--r-- | base/platform_thread_posix.cc | 54 |
2 files changed, 8 insertions, 67 deletions
diff --git a/base/platform_thread_mac.mm b/base/platform_thread_mac.mm index 62139a9..46ac241 100644 --- a/base/platform_thread_mac.mm +++ b/base/platform_thread_mac.mm @@ -5,10 +5,8 @@ #include "base/platform_thread.h" #import <Foundation/Foundation.h> -#include <dlfcn.h> #include "base/logging.h" -#include "base/safe_strerror_posix.h" // A simple class that demonstrates our impressive ability to do nothing. @interface NoOp : NSObject @@ -47,23 +45,4 @@ void InitThreading() { } } -// static -void PlatformThread::SetName(const char* name) { - // pthread_setname_np is only available in 10.6 or later, so test - // for it at runtime. - int (*dynamic_pthread_setname_np)(const char*); - *reinterpret_cast<void**>(&dynamic_pthread_setname_np) = - dlsym(RTLD_DEFAULT, "pthread_setname_np"); - if (!dynamic_pthread_setname_np) - return; - - // Mac OS X does not expose the length limit of the name, so - // hardcode it. - const int kMaxNameLength = 63; - std::string shortened_name = std::string(name).substr(0, kMaxNameLength); - int err = dynamic_pthread_setname_np(shortened_name.c_str()); - if (err < 0) - LOG(ERROR) << "pthread_setname_np: " << safe_strerror(err); -} - } // namespace base diff --git a/base/platform_thread_posix.cc b/base/platform_thread_posix.cc index cc1b209..16fd529 100644 --- a/base/platform_thread_posix.cc +++ b/base/platform_thread_posix.cc @@ -4,7 +4,6 @@ #include "base/platform_thread.h" -#include <dlfcn.h> #include <errno.h> #include <sched.h> @@ -12,21 +11,15 @@ #include <mach/mach.h> #include <sys/resource.h> #include <algorithm> -#endif - -#if defined(OS_LINUX) -#include <sys/prctl.h> +#else #include <sys/syscall.h> #include <unistd.h> #endif -#include "base/logging.h" -#include "base/safe_strerror_posix.h" - #if defined(OS_MACOSX) namespace base { void InitThreading(); -} // namespace base +} // namespace #endif static void* ThreadFunc(void* closure) { @@ -70,46 +63,15 @@ void PlatformThread::Sleep(int duration_ms) { sleep_time = remaining; } -#if defined(OS_LINUX) -// static -void PlatformThread::SetName(const char* name) { - // http://0pointer.de/blog/projects/name-your-threads.html - - // glibc recently added support for pthread_setname_np, but it's not - // commonly available yet. So test for it at runtime. - int (*dynamic_pthread_setname_np)(pthread_t, const char*); - *reinterpret_cast<void**>(&dynamic_pthread_setname_np) = - dlsym(RTLD_DEFAULT, "pthread_setname_np"); - - if (dynamic_pthread_setname_np) { - // This limit comes from glibc, which gets it from the kernel - // (TASK_COMM_LEN). - const int kMaxNameLength = 15; - std::string shortened_name = std::string(name).substr(0, kMaxNameLength); - int err = dynamic_pthread_setname_np(pthread_self(), - shortened_name.c_str()); - if (err < 0) - LOG(ERROR) << "pthread_setname_np: " << safe_strerror(err); - } else { - // Implementing this function without glibc is simple enough. (We - // don't do the name length clipping as above because it will be - // truncated by the callee (see TASK_COMM_LEN above).) - int err = prctl(PR_SET_NAME, name); - if (err < 0) - PLOG(ERROR) << "prctl(PR_SET_NAME)"; - } -} -#elif defined(OS_MACOSX) -// Mac is implemented in platform_thread_mac.mm. -#else // static void PlatformThread::SetName(const char* name) { - // Leave it unimplemented. - - // (This should be relatively simple to implement for the BSDs; I - // just don't have one handy to test the code on.) + // The POSIX standard does not provide for naming threads, and neither Linux + // nor Mac OS X (our two POSIX targets) provide any non-portable way of doing + // it either. (Some BSDs provide pthread_set_name_np but that isn't much of a + // consolation prize.) + // TODO(darin): decide whether stuffing the name in TLS or other in-memory + // structure would be useful for debugging or not. } -#endif // defined(OS_LINUX) namespace { |