diff options
author | Tom Tromey <tom@tromey.com> | 2020-04-23 06:26:31 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2020-04-23 06:26:31 -0600 |
commit | 740480b88afd4f2b01d117525f534ddce28530f3 (patch) | |
tree | 0c1b273c1f4d927ef0c469829855926cc5438ffb | |
parent | 2745674244d6aecddcf636475034bdb9c0a6b4a0 (diff) | |
download | gdb-740480b88afd4f2b01d117525f534ddce28530f3.zip gdb-740480b88afd4f2b01d117525f534ddce28530f3.tar.gz gdb-740480b88afd4f2b01d117525f534ddce28530f3.tar.bz2 |
Remove iterate_over_inferiors
The last caller of iterate_over_inferiors is darwin-nat.c. This patch
removes the calls from this file, and then remove
iterate_over_inferiors.
In general I think "external iteration" is to be preferred in gdb, the
main benefit being that the code is easier to read.
I rebuilt this on Darwin. I seem to only have access to Darwin
systems where gdb does not yet work :-(, so I can't run the test
suite.
gdb/ChangeLog
2020-04-23 Tom Tromey <tom@tromey.com>
* inferior.h (iterate_over_inferiors): Don't declare.
* inferior.c (iterate_over_inferiors): Remove.
* darwin-nat.c (find_inferior_task_it, find_inferior_pid_it):
Remove.
(darwin_find_inferior_by_task, darwin_find_inferior_by_pid): Don't
use iterate_over_inferiors.
(darwin_resume_inferior_it)
(struct resume_inferior_threads_param)
(darwin_resume_inferior_threads_it): Remove.
(darwin_nat_target::resume): Don't use iterate_over_inferiors.
Change-Id: Ib2fdf2c98e40f13156ff869ed3173d5f1fdae7ea
-rw-r--r-- | gdb/ChangeLog | 13 | ||||
-rw-r--r-- | gdb/darwin-nat.c | 68 | ||||
-rw-r--r-- | gdb/inferior.c | 11 | ||||
-rw-r--r-- | gdb/inferior.h | 14 |
4 files changed, 32 insertions, 74 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 571ca4b..f5b4095 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,16 @@ +2020-04-23 Tom Tromey <tom@tromey.com> + + * inferior.h (iterate_over_inferiors): Don't declare. + * inferior.c (iterate_over_inferiors): Remove. + * darwin-nat.c (find_inferior_task_it, find_inferior_pid_it): + Remove. + (darwin_find_inferior_by_task, darwin_find_inferior_by_pid): Don't + use iterate_over_inferiors. + (darwin_resume_inferior_it) + (struct resume_inferior_threads_param) + (darwin_resume_inferior_threads_it): Remove. + (darwin_nat_target::resume): Don't use iterate_over_inferiors. + 2020-04-23 Tom de Vries <tdevries@suse.de> * blockframe.c (find_pc_partial_function): Use diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c index 3bd8d8c..2d74bc0 100644 --- a/gdb/darwin-nat.c +++ b/gdb/darwin-nat.c @@ -378,32 +378,30 @@ darwin_nat_target::check_new_threads (inferior *inf) MACH_CHECK_ERROR (kret); } -static int -find_inferior_task_it (struct inferior *inf, void *port_ptr) -{ - darwin_inferior *priv = get_darwin_inferior (inf); - - return priv != nullptr && priv->task == *(task_t *)port_ptr; -} - -static int -find_inferior_pid_it (struct inferior *inf, void *pid_ptr) -{ - return inf->pid == *(int *)pid_ptr; -} - /* Return an inferior by task port. */ static struct inferior * darwin_find_inferior_by_task (task_t port) { - return iterate_over_inferiors (&find_inferior_task_it, &port); + for (inferior *inf : all_inferiors ()) + { + darwin_inferior *priv = get_darwin_inferior (inf); + + if (priv != nullptr && priv->task == port) + return inf; + } + return nullptr; } /* Return an inferior by pid port. */ static struct inferior * darwin_find_inferior_by_pid (int pid) { - return iterate_over_inferiors (&find_inferior_pid_it, &pid); + for (inferior *inf : all_inferiors ()) + { + if (inf->pid == pid) + return inf; + } + return nullptr; } /* Return a thread by port. */ @@ -458,15 +456,6 @@ darwin_resume_inferior (struct inferior *inf) } } -/* Iterator functions. */ - -static int -darwin_resume_inferior_it (struct inferior *inf, void *arg) -{ - darwin_resume_inferior (inf); - return 0; -} - static void darwin_dump_message (mach_msg_header_t *hdr, int disp_body) { @@ -886,23 +875,6 @@ darwin_resume_inferior_threads (struct inferior *inf, int step, int nsignal) darwin_resume_thread (inf, thread, step, nsignal); } -struct resume_inferior_threads_param -{ - int step; - int nsignal; -}; - -static int -darwin_resume_inferior_threads_it (struct inferior *inf, void *param) -{ - int step = ((struct resume_inferior_threads_param *)param)->step; - int nsignal = ((struct resume_inferior_threads_param *)param)->nsignal; - - darwin_resume_inferior_threads (inf, step, nsignal); - - return 0; -} - /* Suspend all threads of INF. */ static void @@ -951,15 +923,13 @@ darwin_nat_target::resume (ptid_t ptid, int step, enum gdb_signal signal) /* minus_one_ptid is RESUME_ALL. */ if (ptid == minus_one_ptid) { - struct resume_inferior_threads_param param; - - param.nsignal = nsignal; - param.step = step; - /* Resume threads. */ - iterate_over_inferiors (darwin_resume_inferior_threads_it, ¶m); + for (inferior *inf : all_inferiors ()) + darwin_resume_inferior_threads (inf, step, nsignal); + /* Resume tasks. */ - iterate_over_inferiors (darwin_resume_inferior_it, NULL); + for (inferior *inf : all_inferiors ()) + darwin_resume_inferior (inf); } else { diff --git a/gdb/inferior.c b/gdb/inferior.c index ceee00e..2f4ced0 100644 --- a/gdb/inferior.c +++ b/gdb/inferior.c @@ -310,17 +310,6 @@ find_inferior_for_program_space (struct program_space *pspace) return NULL; } -struct inferior * -iterate_over_inferiors (int (*callback) (struct inferior *, void *), - void *data) -{ - for (inferior *inf : all_inferiors_safe ()) - if ((*callback) (inf, data)) - return inf; - - return NULL; -} - int have_inferiors (void) { diff --git a/gdb/inferior.h b/gdb/inferior.h index 4229c60..1ac5136 100644 --- a/gdb/inferior.h +++ b/gdb/inferior.h @@ -589,20 +589,6 @@ extern struct inferior *find_inferior_id (int num); extern struct inferior * find_inferior_for_program_space (struct program_space *pspace); -/* Inferior iterator function. - - Calls a callback function once for each inferior, so long as the - callback function returns false. If the callback function returns - true, the iteration will end and the current inferior will be - returned. This can be useful for implementing a search for a - inferior with arbitrary attributes, or for applying some operation - to every inferior. - - It is safe to delete the iterated inferior from the callback. */ -extern struct inferior *iterate_over_inferiors (int (*) (struct inferior *, - void *), - void *); - /* Returns true if the inferior list is not empty. */ extern int have_inferiors (void); |