Remove for_each_inferior
authorSimon Marchi <simon.marchi@polymtl.ca>
Sun, 3 Dec 2017 01:37:53 +0000 (20:37 -0500)
committerSimon Marchi <simon.marchi@polymtl.ca>
Sun, 3 Dec 2017 01:37:53 +0000 (20:37 -0500)
This patch removes for_each_inferior, replacing all its usages with
for_each_thread.

gdb/gdbserver/ChangeLog:

* inferiors.c (for_each_inferior): Remove.
(clear_inferiors): Use for_each_thread.
* inferiors.h (for_each_inferior): Remove.
* linux-low.c (linux_wait_for_event_filtered): Use
for_each_thread.
(linux_stabilize_threads): Likewise.
* regcache.c (regcache_release): Likewise.
* server.c (gdb_wants_all_threads_stopped): Likewise.
(clear_pending_status_callback): Remove.
(handle_status): Use for_each_thread.
(captured_main): Likewise.
* win32-low.c (child_init_thread_list): Likewise.
(win32_clear_inferiors): Likewise.
(fake_breakpoint_event): Likewise.

gdb/gdbserver/ChangeLog
gdb/gdbserver/inferiors.c
gdb/gdbserver/inferiors.h
gdb/gdbserver/linux-low.c
gdb/gdbserver/regcache.c
gdb/gdbserver/server.c
gdb/gdbserver/win32-low.c

index 882aff4dbbbd59befb104d09c8b9e9b745e9c4c3..e852020395586c14dd07714664a094c4a32f3d8e 100644 (file)
@@ -1,3 +1,20 @@
+2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+       * inferiors.c (for_each_inferior): Remove.
+       (clear_inferiors): Use for_each_thread.
+       * inferiors.h (for_each_inferior): Remove.
+       * linux-low.c (linux_wait_for_event_filtered): Use
+       for_each_thread.
+       (linux_stabilize_threads): Likewise.
+       * regcache.c (regcache_release): Likewise.
+       * server.c (gdb_wants_all_threads_stopped): Likewise.
+       (clear_pending_status_callback): Remove.
+       (handle_status): Use for_each_thread.
+       (captured_main): Likewise.
+       * win32-low.c (child_init_thread_list): Likewise.
+       (win32_clear_inferiors): Likewise.
+       (fake_breakpoint_event): Likewise.
+
 2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
 
        * inferiors.h (find_inferior): Remove.
index 47cc13a06f01de9e63cd74aa3b1b031f54c65dd1..093080dc5549f306c207dbfac175bee4f09b35f9 100644 (file)
@@ -30,17 +30,6 @@ struct thread_info *current_thread;
 /* The current working directory used to start the inferior.  */
 static const char *current_inferior_cwd = NULL;
 
-void
-for_each_inferior (std::list<thread_info *> *thread_list,
-                  void (*action) (thread_info *))
-{
-  gdb_assert (thread_list == &all_threads);
-
-  for_each_thread ([&] (thread_info *thread) {
-    action (thread);
-  });
-}
-
 void
 for_each_inferior_with_data (std::list<thread_info *> *thread_list,
                             void (*action) (thread_info *, void *),
@@ -151,7 +140,7 @@ set_thread_regcache_data (struct thread_info *thread, struct regcache *data)
 void
 clear_inferiors (void)
 {
-  for_each_inferior (&all_threads, free_one_thread);
+  for_each_thread (free_one_thread);
   all_threads.clear ();
 
   clear_dlls ();
index 2aab846d25b2a4f5613ada056f8951f4b9603277..030d9c368af348096d59e800ce59a61fb4c6523e 100644 (file)
@@ -140,8 +140,6 @@ int have_attached_inferiors_p (void);
 
 void clear_inferiors (void);
 
-void for_each_inferior (std::list<thread_info *> *thread_list,
-                       void (*action) (thread_info *));
 void for_each_inferior_with_data (std::list<thread_info *> *thread_list,
                                  void (*action) (thread_info *, void *),
                                  void *data);
index d5449c4bd0d050d721398037d38b89612931fddc..f6a52d58596c2407a94d22d57b39f0dfb8313636 100644 (file)
@@ -2736,7 +2736,7 @@ linux_wait_for_event_filtered (ptid_t wait_ptid, ptid_t filter_ptid,
       /* Now that we've pulled all events out of the kernel, resume
         LWPs that don't have an interesting event to report.  */
       if (stopping_threads == NOT_STOPPING_THREADS)
-       for_each_inferior (&all_threads, resume_stopped_resumed_lwps);
+       for_each_thread (resume_stopped_resumed_lwps);
 
       /* ... and find an LWP with a status to report to the core, if
         any.  */
@@ -2972,7 +2972,7 @@ linux_stabilize_threads (void)
   stabilizing_threads = 1;
 
   /* Kick 'em all.  */
-  for_each_inferior (&all_threads, move_out_of_jump_pad_callback);
+  for_each_thread (move_out_of_jump_pad_callback);
 
   /* Loop until all are stopped out of the jump pads.  */
   while (find_thread (lwp_running) != NULL)
index 5f7152316cd01b22019b2f0aaa0a1d7956d4f862..6a2704276757bfabb0144650dd2827155e83ef53 100644 (file)
@@ -281,7 +281,7 @@ void
 regcache_release (void)
 {
   /* Flush and release all pre-existing register caches.  */
-  for_each_inferior (&all_threads, free_register_cache_thread);
+  for_each_thread (free_register_cache_thread);
 }
 #endif
 
index 26c4a01c9c4e63a11bc40b352c5310cbc8fc8da1..cfc4a128d7b37492a659c09f418ec165ae34d9ba 100644 (file)
@@ -3216,7 +3216,7 @@ myresume (char *own_buf, int step, int sig)
   resume (resume_info, n);
 }
 
-/* Callback for for_each_inferior.  Make a new stop reply for each
+/* Callback for for_each_thread.  Make a new stop reply for each
    stopped thread.  */
 
 static void
@@ -3281,19 +3281,10 @@ gdb_wants_thread_stopped (thread_info *thread)
 static void
 gdb_wants_all_threads_stopped (void)
 {
-  for_each_inferior (&all_threads, gdb_wants_thread_stopped);
+  for_each_thread (gdb_wants_thread_stopped);
 }
 
-/* Callback for for_each_inferior.  Clear the thread's pending status
-   flag.  */
-
-static void
-clear_pending_status_callback (thread_info *thread)
-{
-  thread->status_pending_p = 0;
-}
-
-/* Callback for for_each_inferior.  If the thread is stopped with an
+/* Callback for for_each_thread.  If the thread is stopped with an
    interesting event, mark it as having a pending event.  */
 
 static void
@@ -3348,7 +3339,7 @@ handle_status (char *own_buf)
         reporting now pending.  They'll be reported the next time the
         threads are resumed.  Start by marking all interesting events
         as pending.  */
-      for_each_inferior (&all_threads, set_pending_status_callback);
+      for_each_thread (set_pending_status_callback);
 
       /* Prefer the last thread that reported an event to GDB (even if
         that was a GDB_SIGNAL_TRAP).  */
@@ -3869,8 +3860,10 @@ captured_main (int argc, char *argv[])
             (by the same GDB instance or another) will refresh all its
             state from scratch.  */
          discard_queued_stop_replies (minus_one_ptid);
-         for_each_inferior (&all_threads,
-                            clear_pending_status_callback);
+         for_each_thread ([] (thread_info *thread)
+           {
+             thread->status_pending_p = 0;
+           });
 
          if (tracing)
            {
index fecab84b2f1f8b114ccb124155de8c7414d7f52f..be671a6b485d7aac9f6437f9f201c9bc4cd0dec0 100644 (file)
@@ -339,7 +339,7 @@ child_xfer_memory (CORE_ADDR memaddr, char *our, int len,
 static void
 child_init_thread_list (void)
 {
-  for_each_inferior (&all_threads, delete_thread_info);
+  for_each_thread (delete_thread_info);
 }
 
 /* Zero during the child initialization phase, and nonzero otherwise.  */
@@ -793,7 +793,7 @@ win32_clear_inferiors (void)
   if (current_process_handle != NULL)
     CloseHandle (current_process_handle);
 
-  for_each_inferior (&all_threads, delete_thread_info);
+  for_each_thread (delete_thread_info);
   clear_inferiors ();
 }
 
@@ -1362,7 +1362,7 @@ fake_breakpoint_event (void)
   current_event.u.Exception.ExceptionRecord.ExceptionCode
     = EXCEPTION_BREAKPOINT;
 
-  for_each_inferior (&all_threads, suspend_one_thread);
+  for_each_thread (suspend_one_thread);
 }
 
 #ifdef _WIN32_WCE