From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26262 invoked by alias); 30 Jan 2009 16:39:47 -0000 Received: (qmail 26113 invoked by uid 22791); 30 Jan 2009 16:39:46 -0000 X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_37,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (65.74.133.4) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 30 Jan 2009 16:39:36 +0000 Received: (qmail 23467 invoked from network); 30 Jan 2009 16:39:34 -0000 Received: from unknown (HELO wind.local) (vladimir@127.0.0.2) by mail.codesourcery.com with ESMTPA; 30 Jan 2009 16:39:34 -0000 From: Vladimir Prus To: gdb-patches@sources.redhat.com, Eli Zaretskii Subject: Report current thread in -thread-list-ids output Date: Fri, 30 Jan 2009 19:43:00 -0000 User-Agent: KMail/1.9.10 MIME-Version: 1.0 Content-Type: Multipart/Mixed; boundary="Boundary-00=_P1ygJUnxv8rn6Z0" Message-Id: <200901301939.43053.vladimir@codesourcery.com> Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2009-01/txt/msg00540.txt.bz2 --Boundary-00=_P1ygJUnxv8rn6Z0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 517 This patch makes the MI -thread-list-ids report the current thread. It is advantageous for a frontend like Eclipse, that does not report any details about a thread whatsoever except for the id, and whether a thread is selected. If -thread-list-ids reports current thread, then Eclipse can use -thread-list-ids as opposed to 'info thread', and be a little bit faster. The change in thread.c actually touches MI-only function, so I assume I'm free to make this change. Eli, does the doc change look good? - Volodya --Boundary-00=_P1ygJUnxv8rn6Z0 Content-Type: text/x-diff; charset="iso 8859-15"; name="thread_list_ids.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="thread_list_ids.diff" Content-length: 2001 commit 52cc9bd1b3137c918c8ecd389d2059684b32a9a0 Author: Vladimir Prus Date: Fri Jan 30 19:34:11 2009 +0300 Make -thread-list-ids report the current thread. gdb/doc/ * gdb.texinfo (GDB/MI Thread Commands): Document the 'current-thread-id' field. Remove the example with zero threads, since current GDB won't ever report that if there's inferior. gdb/ * thread.c (do_captured_list_thread_ids): Report the current thread id. diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 583d96c..9a4cd68 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -20497,23 +20497,11 @@ Part of @samp{info threads} supplies the same information. @subsubheading Example -No threads present, besides the main process: - -@smallexample -(gdb) --thread-list-ids -^done,thread-ids=@{@},number-of-threads="0" -(gdb) -@end smallexample - - -Several threads: - @smallexample (gdb) -thread-list-ids ^done,thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@}, -number-of-threads="3" +current-thread-id="1",number-of-threads="3" (gdb) @end smallexample diff --git a/gdb/thread.c b/gdb/thread.c index 8a98b8e..1d6d9c4 100644 --- a/gdb/thread.c +++ b/gdb/thread.c @@ -410,6 +410,7 @@ do_captured_list_thread_ids (struct ui_out *uiout, void *arg) struct thread_info *tp; int num = 0; struct cleanup *cleanup_chain; + int current_thread = -1; prune_threads (); target_find_new_threads (); @@ -420,11 +421,18 @@ do_captured_list_thread_ids (struct ui_out *uiout, void *arg) { if (tp->state_ == THREAD_EXITED) continue; + + if (ptid_equal (tp->ptid, inferior_ptid)) + current_thread = tp->num; + num++; ui_out_field_int (uiout, "thread-id", tp->num); } do_cleanups (cleanup_chain); + + if (current_thread != -1) + ui_out_field_int (uiout, "current-thread-id", current_thread); ui_out_field_int (uiout, "number-of-threads", num); return GDB_RC_OK; } --Boundary-00=_P1ygJUnxv8rn6Z0--