The default main thread name is undefined, so use a constructor to explicitly set it to 'main'. This constructor is marked to run early as the thread name is intended to be used in error reporting / logs which may be triggered very early in QEMU execution.
This is only done on Windows platforms, because on Linux (and possibly other POSIX) changing the main thread name has a side effect of changing the process name reported by tools like 'ps' which fetch from the file /proc/self/task/tid/comm, expecting it to be the binary name. The following patch will address POSIX platforms in a different way. Reviewed-by: Richard Henderson <[email protected]> Reviewed-by: Dr. David Alan Gilbert <[email protected]> Signed-off-by: Daniel P. Berrangé <[email protected]> --- util/qemu-thread-win32.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/util/qemu-thread-win32.c b/util/qemu-thread-win32.c index 31ec305a73..c330d924af 100644 --- a/util/qemu-thread-win32.c +++ b/util/qemu-thread-win32.c @@ -22,6 +22,12 @@ typedef HRESULT (WINAPI *pSetThreadDescription) (HANDLE hThread, static pSetThreadDescription SetThreadDescriptionFunc; static HMODULE kernel32_module; +static void __attribute__((__constructor__(QEMU_CONSTRUCTOR_EARLY))) +qemu_thread_init(void) +{ + qemu_thread_set_name("main"); +} + static bool load_set_thread_description(void) { static gsize _init_once = 0; -- 2.53.0
