From patchwork Sun Oct 20 03:55:13 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Simon Marchi (Code Review)" X-Patchwork-Id: 35174 Received: (qmail 11241 invoked by alias); 20 Oct 2019 03:55:30 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 11146 invoked by uid 89); 20 Oct 2019 03:55:29 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-20.5 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3 autolearn=ham version=3.3.1 spammy= X-HELO: mx1.osci.io Received: from polly.osci.io (HELO mx1.osci.io) (8.43.85.229) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 20 Oct 2019 03:55:27 +0000 Received: by mx1.osci.io (Postfix, from userid 994) id 79F7D2018E; Sat, 19 Oct 2019 23:55:25 -0400 (EDT) Received: from gnutoolchain-gerrit.osci.io (gnutoolchain-gerrit.osci.io [8.43.85.239]) by mx1.osci.io (Postfix) with ESMTP id 7F53820183 for ; Sat, 19 Oct 2019 23:55:13 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by gnutoolchain-gerrit.osci.io (Postfix) with ESMTP id 6C1A620AF6 for ; Sat, 19 Oct 2019 23:55:13 -0400 (EDT) X-Gerrit-PatchSet: 1 Date: Sat, 19 Oct 2019 23:55:13 -0400 From: "Tom Tromey (Code Review)" To: gdb-patches@sourceware.org Message-ID: Auto-Submitted: auto-generated X-Gerrit-MessageType: newchange Subject: [review] Set names of worker threads X-Gerrit-Change-Id: I60473d65ae9ae14d8c56ddde39684240c16aaf35 X-Gerrit-Change-Number: 176 X-Gerrit-ChangeURL: X-Gerrit-Commit: 942d845ba11f25b81b0946e2f6fe095abfd49bb1 References: Reply-To: tromey@sourceware.org, gdb-patches@sourceware.org MIME-Version: 1.0 Content-Disposition: inline User-Agent: Gerrit/3.0.3 Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/176 ...................................................................... Set names of worker threads This adds some configury so that gdb can set the names of worker threads. This makes them show up more nicely when debugging gdb itself. gdb/ChangeLog 2019-10-19 Tom Tromey * gdbsupport/thread-pool.c (thread_pool::set_thread_count): Set name of worker thread. * gdbsupport/common.m4 (GDB_AC_COMMON): Check for pthread_setname_np. * configure, config.in: Rebuild. gdb/gdbserver/ChangeLog 2019-10-19 Tom Tromey * configure, config.in: Rebuild. Change-Id: I60473d65ae9ae14d8c56ddde39684240c16aaf35 --- M gdb/ChangeLog M gdb/config.in M gdb/configure M gdb/gdbserver/ChangeLog M gdb/gdbserver/config.in M gdb/gdbserver/configure M gdb/gdbsupport/common.m4 M gdb/gdbsupport/thread-pool.c 8 files changed, 43 insertions(+), 9 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index ec8f644..17ec8e5 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,13 @@ 2019-10-19 Tom Tromey + * gdbsupport/thread-pool.c (thread_pool::set_thread_count): Set + name of worker thread. + * gdbsupport/common.m4 (GDB_AC_COMMON): Check for + pthread_setname_np. + * configure, config.in: Rebuild. + +2019-10-19 Tom Tromey + * python/python.c (class gdbpy_gil): New. (struct gdbpy_event): Add constructor, destructor, operator(). (gdbpy_post_event): Use run_on_main_thread. diff --git a/gdb/config.in b/gdb/config.in index ff2fd12..54f1dd1 100644 --- a/gdb/config.in +++ b/gdb/config.in @@ -345,6 +345,9 @@ /* Have PTHREAD_PRIO_INHERIT. */ #undef HAVE_PTHREAD_PRIO_INHERIT +/* Define to 1 if you have the `pthread_setname_np' function. */ +#undef HAVE_PTHREAD_SETNAME_NP + /* Define to 1 if you have the `pthread_sigmask' function. */ #undef HAVE_PTHREAD_SIGMASK diff --git a/gdb/configure b/gdb/configure index 5571cf0..2a967bf 100755 --- a/gdb/configure +++ b/gdb/configure @@ -14387,12 +14387,13 @@ # This check must be here, while LIBS includes any necessary # threading library. - for ac_func in pthread_sigmask + for ac_func in pthread_sigmask pthread_setname_np do : - ac_fn_cxx_check_func "$LINENO" "pthread_sigmask" "ac_cv_func_pthread_sigmask" -if test "x$ac_cv_func_pthread_sigmask" = xyes; then : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF -#define HAVE_PTHREAD_SIGMASK 1 +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index 28c3608..e5a5829 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,5 +1,9 @@ 2019-10-19 Tom Tromey + * configure, config.in: Rebuild. + +2019-10-19 Tom Tromey + * remote-utils.c (block_unblock_async_io): Use gdb_sigmask. * linux-low.c (linux_wait_for_event_filtered, linux_async): Use gdb_sigmask. diff --git a/gdb/gdbserver/config.in b/gdb/gdbserver/config.in index 3027ffa..14cf709 100644 --- a/gdb/gdbserver/config.in +++ b/gdb/gdbserver/config.in @@ -195,6 +195,9 @@ /* Have PTHREAD_PRIO_INHERIT. */ #undef HAVE_PTHREAD_PRIO_INHERIT +/* Define to 1 if you have the `pthread_setname_np' function. */ +#undef HAVE_PTHREAD_SETNAME_NP + /* Define to 1 if you have the `pthread_sigmask' function. */ #undef HAVE_PTHREAD_SIGMASK diff --git a/gdb/gdbserver/configure b/gdb/gdbserver/configure index 260e8c0..c5144c4 100755 --- a/gdb/gdbserver/configure +++ b/gdb/gdbserver/configure @@ -7725,12 +7725,13 @@ # This check must be here, while LIBS includes any necessary # threading library. - for ac_func in pthread_sigmask + for ac_func in pthread_sigmask pthread_setname_np do : - ac_fn_cxx_check_func "$LINENO" "pthread_sigmask" "ac_cv_func_pthread_sigmask" -if test "x$ac_cv_func_pthread_sigmask" = xyes; then : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF -#define HAVE_PTHREAD_SIGMASK 1 +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi diff --git a/gdb/gdbsupport/common.m4 b/gdb/gdbsupport/common.m4 index 7da765b..0adcf26 100644 --- a/gdb/gdbsupport/common.m4 +++ b/gdb/gdbsupport/common.m4 @@ -57,7 +57,7 @@ # This check must be here, while LIBS includes any necessary # threading library. - AC_CHECK_FUNCS([pthread_sigmask]) + AC_CHECK_FUNCS([pthread_sigmask pthread_setname_np]) LIBS="$save_LIBS" CXXFLAGS="$save_CXXFLAGS" diff --git a/gdb/gdbsupport/thread-pool.c b/gdb/gdbsupport/thread-pool.c index 993e097..0c3c1ec 100644 --- a/gdb/gdbsupport/thread-pool.c +++ b/gdb/gdbsupport/thread-pool.c @@ -23,6 +23,15 @@ #include "gdbsupport/block-signals.h" #include +/* On the off chance that we have the pthread library on a Windows + host, but std::thread is not using it, avoid calling + pthread_setname_np on Windows. */ +#ifndef _WIN32 +#ifdef HAVE_PTHREAD_SETNAME_NP +#include +#endif +#endif + namespace gdb { @@ -55,6 +64,11 @@ for (size_t i = m_count; i < num_threads; ++i) { std::thread thread (&thread_pool::thread_function, this); +#ifndef _WIN32 /* See the comment at the top of the file. */ +#ifdef HAVE_PTHREAD_SETNAME_NP + pthread_setname_np (thread.native_handle (), "gdb worker"); +#endif +#endif thread.detach (); } }