Index: mozilla/nsprpub/pr/src/md/windows/w95thred.c |
=================================================================== |
--- mozilla/nsprpub/pr/src/md/windows/w95thred.c (revision 179237) |
+++ mozilla/nsprpub/pr/src/md/windows/w95thred.c (working copy) |
@@ -168,7 +168,43 @@ |
return; |
} |
+const DWORD MS_VC_EXCEPTION = 0x406D1388; |
+ |
+#pragma pack(push,8) |
+typedef struct tagTHREADNAME_INFO |
+{ |
+ DWORD dwType; // Must be 0x1000. |
+ LPCSTR szName; // Pointer to name (in user addr space). |
+ DWORD dwThreadID; // Thread ID (-1=caller thread). |
+ DWORD dwFlags; // Reserved for future use, must be zero. |
+} THREADNAME_INFO; |
+#pragma pack(pop) |
+ |
void |
+_PR_MD_SET_CURRENT_THREAD_NAME(const char *name) |
+{ |
+#ifdef _MSC_VER |
+ THREADNAME_INFO info; |
+ |
+ if (!IsDebuggerPresent()) |
+ return; |
+ |
+ info.dwType = 0x1000; |
+ info.szName = (char*) name; |
+ info.dwThreadID = -1; |
+ info.dwFlags = 0; |
+ |
+ __try { |
+ RaiseException(MS_VC_EXCEPTION, |
+ 0, |
+ sizeof(info) / sizeof(ULONG_PTR), |
+ (ULONG_PTR*)&info); |
+ } __except(EXCEPTION_CONTINUE_EXECUTION) { |
+ } |
+#endif |
+} |
+ |
+void |
_PR_MD_CLEAN_THREAD(PRThread *thread) |
{ |
BOOL rv; |