Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(84)

Side by Side Diff: base/threading/platform_thread_posix.cc

Issue 8565036: Set the profiler's thread name at a central place (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | base/threading/platform_thread_win.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/threading/platform_thread.h" 5 #include "base/threading/platform_thread.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 #include <sched.h> 8 #include <sched.h>
9 9
10 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
13 #include "base/safe_strerror_posix.h" 13 #include "base/safe_strerror_posix.h"
14 #include "base/threading/thread_local.h" 14 #include "base/threading/thread_local.h"
15 #include "base/threading/thread_restrictions.h" 15 #include "base/threading/thread_restrictions.h"
16 #include "base/tracked_objects.h"
16 17
17 #if defined(OS_MACOSX) 18 #if defined(OS_MACOSX)
18 #include <mach/mach.h> 19 #include <mach/mach.h>
19 #include <sys/resource.h> 20 #include <sys/resource.h>
20 #include <algorithm> 21 #include <algorithm>
21 #endif 22 #endif
22 23
23 #if defined(OS_LINUX) 24 #if defined(OS_LINUX)
24 #include <dlfcn.h> 25 #include <dlfcn.h>
25 #include <sys/prctl.h> 26 #include <sys/prctl.h>
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 // Linux SetName is currently disabled, as we need to distinguish between 169 // Linux SetName is currently disabled, as we need to distinguish between
169 // helper threads (where it's ok to make this call) and the main thread 170 // helper threads (where it's ok to make this call) and the main thread
170 // (where making this call renames our process, causing tools like killall 171 // (where making this call renames our process, causing tools like killall
171 // to stop working). 172 // to stop working).
172 #if 0 && defined(OS_LINUX) 173 #if 0 && defined(OS_LINUX)
173 // static 174 // static
174 void PlatformThread::SetName(const char* name) { 175 void PlatformThread::SetName(const char* name) {
175 // have to cast away const because ThreadLocalPointer does not support const 176 // have to cast away const because ThreadLocalPointer does not support const
176 // void* 177 // void*
177 current_thread_name.Pointer()->Set(const_cast<char*>(name)); 178 current_thread_name.Pointer()->Set(const_cast<char*>(name));
179 tracked_objects::ThreadData::InitializeThreadContext(name);
178 180
179 // http://0pointer.de/blog/projects/name-your-threads.html 181 // http://0pointer.de/blog/projects/name-your-threads.html
180 182
181 // glibc recently added support for pthread_setname_np, but it's not 183 // glibc recently added support for pthread_setname_np, but it's not
182 // commonly available yet. So test for it at runtime. 184 // commonly available yet. So test for it at runtime.
183 int (*dynamic_pthread_setname_np)(pthread_t, const char*); 185 int (*dynamic_pthread_setname_np)(pthread_t, const char*);
184 *reinterpret_cast<void**>(&dynamic_pthread_setname_np) = 186 *reinterpret_cast<void**>(&dynamic_pthread_setname_np) =
185 dlsym(RTLD_DEFAULT, "pthread_setname_np"); 187 dlsym(RTLD_DEFAULT, "pthread_setname_np");
186 188
187 if (dynamic_pthread_setname_np) { 189 if (dynamic_pthread_setname_np) {
(...skipping 15 matching lines...) Expand all
203 } 205 }
204 } 206 }
205 #elif defined(OS_MACOSX) 207 #elif defined(OS_MACOSX)
206 // Mac is implemented in platform_thread_mac.mm. 208 // Mac is implemented in platform_thread_mac.mm.
207 #else 209 #else
208 // static 210 // static
209 void PlatformThread::SetName(const char* name) { 211 void PlatformThread::SetName(const char* name) {
210 // have to cast away const because ThreadLocalPointer does not support const 212 // have to cast away const because ThreadLocalPointer does not support const
211 // void* 213 // void*
212 current_thread_name.Pointer()->Set(const_cast<char*>(name)); 214 current_thread_name.Pointer()->Set(const_cast<char*>(name));
215 tracked_objects::ThreadData::InitializeThreadContext(name);
213 216
214 // (This should be relatively simple to implement for the BSDs; I 217 // (This should be relatively simple to implement for the BSDs; I
215 // just don't have one handy to test the code on.) 218 // just don't have one handy to test the code on.)
216 } 219 }
217 #endif // defined(OS_LINUX) 220 #endif // defined(OS_LINUX)
218 221
219 222
220 #if !defined(OS_MACOSX) 223 #if !defined(OS_MACOSX)
221 // Mac is implemented in platform_thread_mac.mm. 224 // Mac is implemented in platform_thread_mac.mm.
222 // static 225 // static
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 // Mac OS X uses lower-level mach APIs 257 // Mac OS X uses lower-level mach APIs
255 258
256 // static 259 // static
257 void PlatformThread::SetThreadPriority(PlatformThreadHandle, ThreadPriority) { 260 void PlatformThread::SetThreadPriority(PlatformThreadHandle, ThreadPriority) {
258 // TODO(crogers): implement 261 // TODO(crogers): implement
259 NOTIMPLEMENTED(); 262 NOTIMPLEMENTED();
260 } 263 }
261 #endif 264 #endif
262 265
263 } // namespace base 266 } // namespace base
OLDNEW
« no previous file with comments | « no previous file | base/threading/platform_thread_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698