Changeset 35419 in webkit for trunk/JavaScriptCore/wtf/ThreadingWin.cpp
- Timestamp:
- Jul 29, 2008, 9:11:00 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/wtf/ThreadingWin.cpp
r31871 r35419 78 78 namespace WTF { 79 79 80 // MS_VC_EXCEPTION, THREADNAME_INFO, and setThreadName all come from <http://msdn.microsoft.com/en-us/library/xcb2z8hs.aspx>. 81 static const DWORD MS_VC_EXCEPTION = 0x406D1388; 82 83 #pragma pack(push, 8) 84 typedef struct tagTHREADNAME_INFO { 85 DWORD dwType; // must be 0x1000 86 LPCSTR szName; // pointer to name (in user addr space) 87 DWORD dwThreadID; // thread ID (-1=caller thread) 88 DWORD dwFlags; // reserved for future use, must be zero 89 } THREADNAME_INFO; 90 #pragma pack(pop) 91 92 static void setThreadName(DWORD dwThreadID, LPCSTR szThreadName) 93 { 94 THREADNAME_INFO info; 95 info.dwType = 0x1000; 96 info.szName = szThreadName; 97 info.dwThreadID = dwThreadID; 98 info.dwFlags = 0; 99 100 __try { 101 RaiseException(MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(ULONG_PTR), reinterpret_cast<ULONG_PTR*>(&info)); 102 } __except (EXCEPTION_CONTINUE_EXECUTION) { 103 } 104 } 105 80 106 Mutex* atomicallyInitializedStaticMutex; 81 107 … … 96 122 initializeMainThread(); 97 123 mainThreadIdentifier = currentThread(); 124 setThreadName(mainThreadIdentifier, "Main Thread"); 98 125 } 99 126 } … … 146 173 } 147 174 148 ThreadIdentifier createThread(ThreadFunction entryPoint, void* data) 149 { 175 ThreadIdentifier createThread(ThreadFunction entryPoint, void* data, const char* threadName) 176 { 177 // Visual Studio has a 31-character limit on thread names. Longer names will 178 // be truncated silently, but we'd like callers to know about the limit. 179 ASSERT_ARG(szThreadName, strlen(szThreadName) <= 31); 180 150 181 unsigned threadIdentifier = 0; 151 182 ThreadIdentifier threadID = 0; … … 157 188 } 158 189 190 if (threadName) 191 setThreadName(threadIdentifier, threadName); 192 159 193 threadID = static_cast<ThreadIdentifier>(threadIdentifier); 160 194 storeThreadHandleByIdentifier(threadIdentifier, threadHandle); 161 195 162 196 return threadID; 197 } 198 199 // This function is deprecated but needs to be kept around for backward 200 // compatibility. Use the 3-argument version of createThread above. 201 ThreadIdentifier createThread(ThreadFunction entryPoint, void* data) 202 { 203 return createThread(entryPoint, data, 0); 163 204 } 164 205
Note:
See TracChangeset
for help on using the changeset viewer.