From patchwork Sat Sep 1 12:46:30 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Michel X-Patchwork-Id: 10584729 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6421F139B for ; Sat, 1 Sep 2018 12:53:06 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 52EA029B18 for ; Sat, 1 Sep 2018 12:53:06 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 471C229C0F; Sat, 1 Sep 2018 12:53:06 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id E0FB329B18 for ; Sat, 1 Sep 2018 12:53:05 +0000 (UTC) Received: from localhost ([::1]:37066 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fw5Oj-0003Gu-89 for patchwork-qemu-devel@patchwork.kernel.org; Sat, 01 Sep 2018 08:53:05 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35646) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fw5JZ-00068Q-7N for qemu-devel@nongnu.org; Sat, 01 Sep 2018 08:47:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fw5JY-0007yF-6J for qemu-devel@nongnu.org; Sat, 01 Sep 2018 08:47:45 -0400 Received: from greensocs.com ([193.104.36.180]:40639) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fw5JQ-0007kI-PS; Sat, 01 Sep 2018 08:47:37 -0400 Received: from localhost (localhost [127.0.0.1]) by greensocs.com (Postfix) with ESMTP id 826DAC7AF6; Sat, 1 Sep 2018 14:47:08 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=greensocs.com; s=mail; t=1535806028; bh=enKqiXZ0cDdY2cDIYNFZB12+BPC+N/hVVcWV4c8b8TM=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=cMyushgZPeS9s11V9IuJmePdXYlGqvwzxNzydaFEh7zqn+Uhimr4NSjuc6ZOsHkyT 7h8CNmvNiRsm1z9Vurb2TTSy4R1rdxlA35II8leHYkfWkg8AYEFOyoFKWt9B8hWiUQ lMF1I0XpUIGYh/Ycko4yz+T5ng7Mm2U+298meUks= X-Virus-Scanned: amavisd-new at greensocs.com Authentication-Results: gs-01.greensocs.com (amavisd-new); dkim=pass (1024-bit key) header.d=greensocs.com header.b=ucgxJoDk; dkim=pass (1024-bit key) header.d=greensocs.com header.b=0lJ0hqSO Received: from greensocs.com ([127.0.0.1]) by localhost (gs-01.greensocs.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id b8nZ9Nww8v9M; Sat, 1 Sep 2018 14:47:07 +0200 (CEST) Received: by greensocs.com (Postfix, from userid 998) id 53E86521AAA; Sat, 1 Sep 2018 14:47:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=greensocs.com; s=mail; t=1535806027; bh=enKqiXZ0cDdY2cDIYNFZB12+BPC+N/hVVcWV4c8b8TM=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=ucgxJoDk3mtGw4c95Q+g7Lrx3xybK/+tjUSDChFCtAC0XlMIeN7EWzcRlxWJk2p9l 3hAMhwE8AKWPzcBYsS5c3uUVXnFArGkxnSQObvXZ+DLWlhVa6khuyQ1FFv9uOb6dig smhc3ubrXYmqLxCfeP+KzL54NQINLhxYHUKfXO+0= Received: from michell-laptop.home.lmichel.fr (LFbn-LYO-1-488-36.w2-7.abo.wanadoo.fr [2.7.77.36]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: luc.michel@greensocs.com) by greensocs.com (Postfix) with ESMTPSA id A7511521AAF; Sat, 1 Sep 2018 14:47:06 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=greensocs.com; s=mail; t=1535806026; bh=enKqiXZ0cDdY2cDIYNFZB12+BPC+N/hVVcWV4c8b8TM=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=0lJ0hqSO5qrjUJ0rNbbfJklcRTIhlgkgItZMTf9p3jIg1zw4liKCJyazYFGCod9lG 10ieGjH/dEz7TltTuHAAo7oabSsY8xFbbiUsD7IkcxtcGRBhDXpHSA8V3ZH8H8PJKI HrXPC2gzq+8KdgZq1yy5z2JouzRutOWcTWhmgjwI= From: Luc Michel To: qemu-devel@nongnu.org Date: Sat, 1 Sep 2018 14:46:30 +0200 Message-Id: <20180901124639.19735-7-luc.michel@greensocs.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180901124639.19735-1-luc.michel@greensocs.com> References: <20180901124639.19735-1-luc.michel@greensocs.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 193.104.36.180 Subject: [Qemu-devel] [PATCH 06/15] gdbstub: add multiprocess support to (f|s)ThreadInfo and ThreadExtraInfo X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , alistair@alistair23.me, mark.burton@greensocs.com, saipava@xilinx.com, edgari@xilinx.com, qemu-arm@nongnu.org, Luc Michel Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP Change the thread info related packets handling to support multiprocess extension. Add the CPUs class name in the extra info to help differentiate them in multiprocess mode. Signed-off-by: Luc Michel --- gdbstub.c | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index c15250ce65..43015f7792 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1249,11 +1249,10 @@ out: static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *cpu; CPUClass *cc; const char *p; - uint32_t thread; uint32_t pid, tid; int ch, reg_size, type, res; uint8_t mem_buf[MAX_PACKET_LENGTH]; char buf[sizeof(mem_buf) + 1 /* trailing NUL */]; char thread_id[16]; @@ -1541,30 +1540,43 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf) snprintf(buf, sizeof(buf), "QC%s", get_thread_id(s, cpu, thread_id, sizeof(thread_id))); put_packet(s, buf); break; } else if (strcmp(p,"fThreadInfo") == 0) { - s->query_cpu = first_cpu; + s->query_cpu = gdb_first_cpu(s); goto report_cpuinfo; } else if (strcmp(p,"sThreadInfo") == 0) { report_cpuinfo: if (s->query_cpu) { - snprintf(buf, sizeof(buf), "m%x", cpu_gdb_index(s->query_cpu)); + snprintf(buf, sizeof(buf), "m%s", + get_thread_id(s, s->query_cpu, + thread_id, sizeof(thread_id))); put_packet(s, buf); - s->query_cpu = CPU_NEXT(s->query_cpu); + s->query_cpu = gdb_next_cpu(s, s->query_cpu); } else put_packet(s, "l"); break; } else if (strncmp(p,"ThreadExtraInfo,", 16) == 0) { - thread = strtoull(p+16, (char **)&p, 16); - cpu = find_cpu(thread); + read_thread_id(p + 16, &p, &pid, &tid); + cpu = gdb_get_cpu(s, pid, tid); if (cpu != NULL) { cpu_synchronize_state(cpu); - /* memtohex() doubles the required space */ - len = snprintf((char *)mem_buf, sizeof(buf) / 2, - "CPU#%d [%s]", cpu->cpu_index, - cpu->halted ? "halted " : "running"); + + if (s->multiprocess && (s->process_num > 1)) { + /* Print the CPU model in multiprocess mode */ + ObjectClass *oc = object_get_class(OBJECT(cpu)); + const char *cpu_model = object_class_get_name(oc); + len = snprintf((char *)mem_buf, sizeof(buf) / 2, + "CPU#%d %s [%s]", cpu->cpu_index, + cpu_model, + cpu->halted ? "halted " : "running"); + } else { + /* memtohex() doubles the required space */ + len = snprintf((char *)mem_buf, sizeof(buf) / 2, + "CPU#%d [%s]", cpu->cpu_index, + cpu->halted ? "halted " : "running"); + } trace_gdbstub_op_extra_info((char *)mem_buf); memtohex(buf, mem_buf, len); put_packet(s, buf); } break;