[PATCH] Cygwin: Set threadnames with SetThreadDescription()
Ken Brown
kbrown@cornell.edu
Mon May 30 15:37:44 GMT 2022
On 5/29/2022 10:03 AM, Jon Turney wrote:
> gdb master recently learnt how to use GetThreadDescription() [1], so set
> threadnames using SetThreadDescription() [available since Windows
> 101607] as well.
>
> This is superior to using a special exception to indicate the thread
> name to the debugger, because the thread name isn't missed if you don't
> have a debugger attached at the time it's set.
>
> It's not clear what the encoding of a thread name string is, we assume
> UTF8 for the moment.
>
> For the moment, continue to use the old method as well, for the benefit
> of older gdb versions etc.
LGTM, except for a few missing spaces (see below), although maybe you did that
deliberately since the existing code was already like that.
> --- a/winsup/cygwin/miscfuncs.cc
> +++ b/winsup/cygwin/miscfuncs.cc
> @@ -18,6 +18,9 @@ details. */
> #include "tls_pbuf.h"
> #include "mmap_alloc.h"
>
> +/* not yet prototyped in w32api */
> +extern "C" HRESULT WINAPI SetThreadDescription(HANDLE hThread, PCWSTR lpThreadDescription);
^
> @@ -993,8 +996,8 @@ wmempcpy: \n\
>
> #define MS_VC_EXCEPTION 0x406D1388
>
> -void
> -SetThreadName(DWORD dwThreadID, const char* threadName)
^
> +static void
> +SetThreadNameExc(DWORD dwThreadID, const char* threadName)
^
> @@ -1025,6 +1028,32 @@ SetThreadName(DWORD dwThreadID, const char* threadName)
> __endtry
> }
>
> +void
> +SetThreadName(DWORD dwThreadID, const char* threadName)
^
[...]
> + SetThreadNameExc(dwThreadID, threadName);
^
Ken
More information about the Cygwin-patches
mailing list