This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH 1/2] gdb: define convenience function 'exists_non_stop_target'
- From: Tankut Baris Aktemur <tankut dot baris dot aktemur at intel dot com>
- To: gdb-patches at sourceware dot org
- Cc: palves at redhat dot com
- Date: Thu, 6 Feb 2020 09:29:58 +0100
- Subject: [PATCH 1/2] gdb: define convenience function 'exists_non_stop_target'
- References: <1580977799-4371-1-git-send-email-tankut.baris.aktemur@intel.com>
Define a predicate function that returns true if there exists an
inferior with a non-stop target.
gdb/ChangeLog:
2020-02-05 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
* target.h (exists_non_stop_target): New function declaration.
* target.c (exists_non_stop_target): New function.
---
gdb/target.c | 20 ++++++++++++++++++++
gdb/target.h | 3 +++
2 files changed, 23 insertions(+)
diff --git a/gdb/target.c b/gdb/target.c
index 470ef51d69e..a332521af3b 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -3934,6 +3934,26 @@ target_is_non_stop_p (void)
&& target_always_non_stop_p ()));
}
+/* See target.h. */
+
+bool
+exists_non_stop_target ()
+{
+ if (target_is_non_stop_p ())
+ return true;
+
+ scoped_restore_current_thread restore_thread;
+
+ for (inferior *inf : all_inferiors ())
+ {
+ switch_to_inferior_no_thread (inf);
+ if (target_is_non_stop_p ())
+ return true;
+ }
+
+ return false;
+}
+
/* Controls if targets can report that they always run in non-stop
mode. This is just for maintainers to use when debugging gdb. */
enum auto_boolean target_non_stop_enabled = AUTO_BOOLEAN_AUTO;
diff --git a/gdb/target.h b/gdb/target.h
index 26b71cfeb09..40ca5cac8b1 100644
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -1857,6 +1857,9 @@ extern enum auto_boolean target_non_stop_enabled;
non-stop" is on. */
extern int target_is_non_stop_p (void);
+/* Return true if at least one inferior has a non-stop target. */
+extern bool exists_non_stop_target ();
+
#define target_execution_direction() \
(current_top_target ()->execution_direction ())
--
2.17.1