summaryrefslogtreecommitdiffstats
path: root/base/threading/platform_thread_mac.mm
diff options
context:
space:
mode:
authornduca@chromium.org <nduca@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-09 15:16:25 +0000
committernduca@chromium.org <nduca@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-09 15:16:25 +0000
commit5b4926e1893925ce5be80d1e43fe753f27952e9c (patch)
treed35c2bbc7e91a18ea5256f0690912ff8493d5aa8 /base/threading/platform_thread_mac.mm
parent151648c6d04cb19e8bfe868bb668342912952e44 (diff)
downloadchromium_src-5b4926e1893925ce5be80d1e43fe753f27952e9c.zip
chromium_src-5b4926e1893925ce5be80d1e43fe753f27952e9c.tar.gz
chromium_src-5b4926e1893925ce5be80d1e43fe753f27952e9c.tar.bz2
Implement backend for thread names and process names.
Added a new trace event phase 'M'/TRACE_EVENT_PHASE_METADATA, which can become a general mechanism for adding metadata to traces. The two M-type events that we then add are: {ph=M pid=<pid> name="process_name" args={ name="name of pid" }} {ph=M pid=<pid> tid=<tid> name="thread_name" args={ name="name of tid" }} base::thread is instrumented to set names automatically. I will do a followon changelist to add instrumentation to Chrome for its various processes and threads. Review URL: http://codereview.chromium.org/7495031 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@95997 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/threading/platform_thread_mac.mm')
-rw-r--r--base/threading/platform_thread_mac.mm10
1 files changed, 10 insertions, 0 deletions
diff --git a/base/threading/platform_thread_mac.mm b/base/threading/platform_thread_mac.mm
index 7d59064..9894a1d 100644
--- a/base/threading/platform_thread_mac.mm
+++ b/base/threading/platform_thread_mac.mm
@@ -11,9 +11,12 @@
#include <mach/thread_policy.h>
#include "base/logging.h"
+#include "base/threading/thread_local.h"
namespace base {
+static ThreadLocalPointer<char> current_thread_name;
+
// If Cocoa is to be used on more than one thread, it must know that the
// application is multithreaded. Since it's possible to enter Cocoa code
// from threads created by pthread_thread_create, Cocoa won't necessarily
@@ -37,6 +40,8 @@ void InitThreading() {
// static
void PlatformThread::SetName(const char* name) {
+ current_thread_name.Set(const_cast<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*);
@@ -54,6 +59,11 @@ void PlatformThread::SetName(const char* name) {
dynamic_pthread_setname_np(shortened_name.c_str());
}
+// static
+const char* PlatformThread::GetName() {
+ return current_thread_name.Get();
+}
+
namespace {
void SetPriorityNormal(mach_port_t mach_thread_id) {