Added SetThreadDescription to set the unmanaged thread name (#12593)
authorAlois-xx <akraus1@gmx.de>
Mon, 14 Aug 2017 17:26:28 +0000 (19:26 +0200)
committerJan Kotas <jkotas@microsoft.com>
Mon, 14 Aug 2017 17:26:28 +0000 (10:26 -0700)
commit8d5b762c7b97f635594d4281fca709632d6180c5
treeda912ae1cc807b6b24949d1b46aaf5059f33e553
parentb24d46b2fed0166cfe3bc2ae39e95b6a049f52fe
Added SetThreadDescription to set the unmanaged thread name (#12593)

* Added SetThreadDescription to set the unmanaged thread name as well when a managed thread name was set.
This will show up in future debuggers which know how to read that information or in ETW traces in the Thread Name column.

* use printf  instead of wprintf which exists on all platforms.

* Removed printf
Ensure that GetProceAddress is only called once to when the method is not present.
Potential perf hit should be negligible since setting a thread name can only happen once per managed thread.

* - Moved SetThreadName code to winfix.cpp as proposed
- Finalizer and threadpool threads get their name
- GCToEEInterface::CreateBackgroundThread is also named
- but regular GC threads have no name because when I included utilcode.h things did break apart.

* Fix for data race in g_pfnSetThreadDescription

* Fix string literals on unix builds.

* Fixed nits
Settled thread name on ".NET Core ThreadPool"
src/inc/utilcode.h
src/utilcode/winfix.cpp
src/vm/comsynchronizable.cpp
src/vm/finalizerthread.cpp
src/vm/gcenv.ee.cpp
src/vm/threads.cpp
src/vm/threads.h
src/vm/win32threadpool.cpp