From: Nick Roberts <nickrob@snap.net.nz>
To: gdb-patches@sources.redhat.com
Cc: ghost@cs.msu.su
Subject: [patch:MI] Observer for thread-changed
Date: Mon, 09 Jun 2008 12:16:00 -0000 [thread overview]
Message-ID: <18509.7945.19078.399646@kahikatea.snap.net.nz> (raw)
This patch is the thread-changed notification for MI using an observer.
No regressions.
--
Nick http://www.inet.net.nz/~nickrob
2008-06-09 Nick Roberts <nickrob@snap.net.nz>
* mi/mi-interp.c (mi_thread_changed): New static function.
(mi_interpreter_init): Register mi_thread_changed as thread_changed
observer .
* thread.c (thread_command): Notify thread changes using observer.
* infrun.c (normal_stop): Ditto.
* mi/mi-main.c (mi_cmd_thread_select): Ditto.
* Makefile.in (mi-main.o) : Add dependency on observer.h.
2008-06-09 Nick Roberts <nickrob@snap.net.nz>
* observer.texi (GDB Observers): New observer for thread_changed.
Index: thread.c
===================================================================
RCS file: /cvs/src/src/gdb/thread.c,v
retrieving revision 1.71
diff -p -u -p -r1.71 thread.c
--- thread.c 6 Jun 2008 00:32:51 -0000 1.71
+++ thread.c 9 Jun 2008 12:13:23 -0000
@@ -740,6 +740,7 @@ thread_command (char *tidstr, int from_t
annotate_thread_changed ();
gdb_thread_select (uiout, tidstr, NULL);
+ observer_notify_thread_changed ();
}
/* Print notices when new threads are attached and detached. */
Index: infrun.c
===================================================================
RCS file: /cvs/src/src/gdb/infrun.c,v
retrieving revision 1.278
diff -p -u -p -r1.278 infrun.c
--- infrun.c 6 Jun 2008 00:33:52 -0000 1.278
+++ infrun.c 9 Jun 2008 12:13:25 -0000
@@ -3605,6 +3605,7 @@ normal_stop (void)
target_terminal_ours_for_output ();
printf_filtered (_("[Switching to %s]\n"),
target_pid_to_str (inferior_ptid));
+ observer_notify_thread_changed ();
annotate_thread_changed ();
previous_inferior_ptid = inferior_ptid;
}
Index: Makefile.in
===================================================================
RCS file: /cvs/src/src/gdb/Makefile.in,v
retrieving revision 1.1026
diff -p -u -p -r1.1026 Makefile.in
--- Makefile.in 6 Jun 2008 20:58:08 -0000 1.1026
+++ Makefile.in 9 Jun 2008 12:13:28 -0000
@@ -3285,7 +3285,8 @@ mi-main.o: $(srcdir)/mi/mi-main.c $(defs
$(gdb_string_h) $(exceptions_h) $(top_h) $(gdbthread_h) $(mi_cmds_h) \
$(mi_parse_h) $(mi_getopt_h) $(mi_console_h) $(ui_out_h) $(mi_out_h) \
$(interps_h) $(event_loop_h) $(event_top_h) $(gdbcore_h) $(value_h) \
- $(regcache_h) $(gdb_h) $(frame_h) $(mi_main_h) $(language_h)
+ $(regcache_h) $(gdb_h) $(frame_h) $(mi_main_h) $(language_h) \
+ $(observer_h)
$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-main.c
mi-out.o: $(srcdir)/mi/mi-out.c $(defs_h) $(ui_out_h) $(mi_out_h)
$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-out.c
Index: mi/mi-interp.c
===================================================================
RCS file: /cvs/src/src/gdb/mi/mi-interp.c,v
retrieving revision 1.30
diff -p -u -p -r1.30 mi-interp.c
--- mi/mi-interp.c 3 May 2008 15:10:42 -0000 1.30
+++ mi/mi-interp.c 9 Jun 2008 12:13:28 -0000
@@ -68,6 +68,7 @@ static void mi_remove_notify_hooks (void
static void mi_new_thread (struct thread_info *t);
static void mi_thread_exit (struct thread_info *t);
+static void mi_thread_changed (void);
static void *
mi_interpreter_init (int top_level)
@@ -92,6 +93,7 @@ mi_interpreter_init (int top_level)
{
observer_attach_new_thread (mi_new_thread);
observer_attach_thread_exit (mi_thread_exit);
+ observer_attach_thread_changed (mi_thread_changed);
}
return mi;
@@ -331,6 +333,27 @@ mi_thread_exit (struct thread_info *t)
gdb_flush (mi->event_channel);
}
+static void
+mi_thread_changed ()
+{
+ struct mi_interp *mi = top_level_interpreter_data ();
+ struct interp *interp_to_use;
+ struct ui_out *old_uiout, *temp_uiout;
+ int version;
+
+ fprintf_unfiltered (mi->event_channel, "thread-changed");
+ interp_to_use = top_level_interpreter ();
+ old_uiout = uiout;
+ temp_uiout = interp_ui_out (interp_to_use);
+ version = mi_version (temp_uiout);
+ temp_uiout = mi_out_new (version);
+ uiout = temp_uiout;
+ ui_out_field_int (uiout, "new-thread-id", pid_to_thread_id (inferior_ptid));
+ mi_out_put (uiout, mi->event_channel);
+ uiout = old_uiout;
+ gdb_flush (mi->event_channel);
+}
+
extern initialize_file_ftype _initialize_mi_interp; /* -Wmissing-prototypes */
void
Index: mi/mi-main.c
===================================================================
RCS file: /cvs/src/src/gdb/mi/mi-main.c,v
retrieving revision 1.115
diff -p -u -p -r1.115 mi-main.c
--- mi/mi-main.c 6 May 2008 21:35:01 -0000 1.115
+++ mi/mi-main.c 9 Jun 2008 12:13:28 -0000
@@ -45,6 +45,7 @@
#include "frame.h"
#include "mi-main.h"
#include "language.h"
+#include "observer.h"
#include <ctype.h>
#include <sys/time.h>
@@ -241,6 +242,7 @@ mi_cmd_thread_select (char *command, cha
error ("mi_cmd_thread_select: USAGE: threadnum.");
rc = gdb_thread_select (uiout, argv[0], &mi_error_message);
+ observer_notify_thread_changed ();
if (rc == GDB_RC_FAIL)
{
Index: doc/observer.texi
===================================================================
RCS file: /cvs/src/src/gdb/doc/observer.texi,v
retrieving revision 1.15
diff -p -u -p -r1.15 observer.texi
--- doc/observer.texi 3 May 2008 15:10:42 -0000 1.15
+++ doc/observer.texi 9 Jun 2008 12:13:28 -0000
@@ -137,3 +137,6 @@ The thread specified by @var{t} has been
The thread specified by @var{t} has exited.
@end deftypefun
+@deftypefun void thread_changed ()
+A new thread has been selected.
+@end deftypefun
next reply other threads:[~2008-06-09 12:16 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-09 12:16 Nick Roberts [this message]
2008-06-09 13:36 ` Pedro Alves
2008-06-09 13:28 ` Pedro Alves
2008-06-09 15:06 ` Pedro Alves
2008-06-09 14:15 ` Pedro Alves
2008-06-09 23:35 ` Nick Roberts
2008-06-10 1:40 ` Pedro Alves
2008-06-10 2:30 ` Nick Roberts
2008-06-10 3:13 ` Pedro Alves
2008-06-10 6:39 ` Nick Roberts
2009-01-17 0:10 ` [PATCH]:annotations [was Re: [patch:MI] Observer for thread-changed] Nick Roberts
2009-01-17 17:54 ` [PATCH]:annotations Tom Tromey
2008-06-10 8:26 ` [patch:MI] Observer for thread-changed Vladimir Prus
2008-06-10 9:24 ` Nick Roberts
2008-06-10 10:26 ` Vladimir Prus
2008-06-10 17:23 ` Daniel Jacobowitz
2008-06-14 18:52 ` Vladimir Prus
2008-06-14 19:13 ` Tom Tromey
2008-06-14 19:22 ` Bob Rossi
2008-06-15 3:20 ` Nick Roberts
2008-06-14 20:04 ` Vladimir Prus
2008-06-15 21:51 ` Tom Tromey
2008-06-14 19:43 ` Daniel Jacobowitz
2008-06-15 0:44 ` Nick Roberts
2008-06-15 21:03 ` Vladimir Prus
2008-06-15 22:31 ` Nick Roberts
2008-06-16 22:28 ` Daniel Jacobowitz
2008-06-15 17:58 ` Vladimir Prus
2008-06-10 8:40 ` Vladimir Prus
2008-06-10 9:19 ` Nick Roberts
2008-06-10 9:36 ` Vladimir Prus
2008-06-11 0:08 ` Nick Roberts
2008-06-11 7:46 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=18509.7945.19078.399646@kahikatea.snap.net.nz \
--to=nickrob@snap.net.nz \
--cc=gdb-patches@sources.redhat.com \
--cc=ghost@cs.msu.su \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox