From nobody Fri May 3 04:30:09 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1686228159; cv=none; d=zohomail.com; s=zohoarc; b=DQq5StAaXX8wq3qjKSF6HV1WGH8LwsjHRI7AI4Y/WZBkdUGIy4sShAZqfwLEcPXft79bekC4hsmDEMPFTUoaNYSBRpLGEHmn2Tfj3KOBWnZPOSFiFAzEzEad5hF0cCo7otwXJnjfoze5lhh/Asz49ulI6XOtsfo//LhtkPlAgGM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686228159; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=0fJy1sjStRMrctTrd8eWHr4fZQUPa8Euy65mZZsWwKQ=; b=Sbt04UrO9D1yYXp/mPsssvjCVXvXDaflhPMSq1r4T4N9ub94FAk2nP8Y3B4kos97JQbjdSD70gtp+IURs1fTZ/J7Zz3rK+ZYI9eoIkDlJUvGggq4cd2qcHLxIXEy6381R9qP5YvPNpwHnsocLNDmy1mhYzi7iWZPEclBmiIOxI8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1686228159100151.5959984747716; Thu, 8 Jun 2023 05:42:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q7Exl-0002ms-G7; Thu, 08 Jun 2023 08:42:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7Exj-0002mK-R0 for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:41:59 -0400 Received: from pv50p00im-zteg10011501.me.com ([17.58.6.42]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7Exi-00008f-AU for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:41:59 -0400 Received: from localhost.localdomain (pv50p00im-dlb-asmtp-mailmevip.me.com [17.56.9.10]) by pv50p00im-zteg10011501.me.com (Postfix) with ESMTPSA id DE89A4A01C6; Thu, 8 Jun 2023 12:41:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ynddal.dk; s=sig1; t=1686228117; bh=0fJy1sjStRMrctTrd8eWHr4fZQUPa8Euy65mZZsWwKQ=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=DZG+vGn3IJ76Q2L7wPyDl7uJB70UNr8tdD8m52plahm1Ds0ulpR0w8lCHGKKSFCYZ dAyUm6/NBAV+i+rtZZvMxwkoFYbyIQBopYKnkEgFCGyBeLRFyJvH64ZS5CPjojcz4Y y0VpFPBo4tKmJuPDUP/2FgeZLMLEweJC8FETqxbEPb2OvjcnQdyzHd0vRgcGa0/u4M U79kDTqrOEif7MOBLNGTJwY8gSh+loFX8RPHP+4JzJ9MxWBxH4YBAYZBYnvXvtwSxn 8Ap95cACfW8zS1DZnD+Cl/a3XMDWqhKePGNfSH1YsuAxGwGaAyr1u6yevuyv5C+bmv R6TMjo+/Z8O/w== From: Mads Ynddal To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi , John Snow , Mads Ynddal , Cleber Rosa , Mads Ynddal Subject: [PATCH v3 01/14] simpletrace: add __all__ to define public interface Date: Thu, 8 Jun 2023 14:41:34 +0200 Message-Id: <20230608124147.51125-2-mads@ynddal.dk> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230608124147.51125-1-mads@ynddal.dk> References: <20230608124147.51125-1-mads@ynddal.dk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: uu5KK2DqgI7idY5dgbXWAwQVelMOrbPK X-Proofpoint-ORIG-GUID: uu5KK2DqgI7idY5dgbXWAwQVelMOrbPK X-Proofpoint-Virus-Version: =?UTF-8?Q?vendor=3Dfsecure_engine=3D1.1.170-22c6f66c430a71ce266a39bfe25bc?= =?UTF-8?Q?2903e8d5c8f:6.0.517,18.0.572,17.0.605.474.0000000_definitions?= =?UTF-8?Q?=3D2022-06-21=5F01:2022-06-21=5F01,2020-02-14=5F11,2020-01-23?= =?UTF-8?Q?=5F02_signatures=3D0?= X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 mlxlogscore=505 adultscore=0 spamscore=0 phishscore=0 malwarescore=0 clxscore=1030 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2306080110 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=17.58.6.42; envelope-from=mads@ynddal.dk; helo=pv50p00im-zteg10011501.me.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @ynddal.dk) X-ZM-MESSAGEID: 1686228160265100001 Content-Type: text/plain; charset="utf-8" From: Mads Ynddal It was unclear what was the supported public interface. I.e. when refactoring the code, what functions/classes are important to retain. Signed-off-by: Mads Ynddal --- scripts/simpletrace.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/simpletrace.py b/scripts/simpletrace.py index 1f6d1ae1f3..b221d9a241 100755 --- a/scripts/simpletrace.py +++ b/scripts/simpletrace.py @@ -14,6 +14,8 @@ from tracetool import read_events, Event from tracetool.backend.simple import is_string =20 +__all__ =3D ['Analyzer', 'process', 'run'] + header_event_id =3D 0xffffffffffffffff header_magic =3D 0xf2b177cb0aa429b4 dropped_event_id =3D 0xfffffffffffffffe --=20 2.38.1 From nobody Fri May 3 04:30:09 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1686228235; cv=none; d=zohomail.com; s=zohoarc; b=nl+Ybe1Hqq0TkzZiR2KlV6mKtETNw2rSxg6bnkHm8rCtL8hZNqmhYOJ1H3eU2yxyeLnwnk5jE6Nah/zHUOhkKQenHCjwZS4rK2QohcJhn7sCKABwdKyvfLJuLACy9GaFB4XdFF0qJBE22040LLu8UCXSjTaqP0BHTr7eKVwOxjM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686228235; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=LDRzB8NZ046ueAIigp31NIDUT523AGKGB/KGni40fIc=; b=JVSKE1CxYxzZi6O6jWhTvp0cJw8xCg8nSN5daJkCbBiJLvfc+SUKiyiaohyw/t6ELGZirjvUrMzgn3K6/+RuOeupC5BGbk0UCQWlcPpanZi+FaWvyFWRVgM06oKIRa+ioBLsYuu5tbik2gR0INuQo/72lSIqn+4sVeavbx15Uqg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 168622823597944.056752300908784; Thu, 8 Jun 2023 05:43:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q7Exo-0002nY-6K; Thu, 08 Jun 2023 08:42:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7Exm-0002n9-Jt for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:02 -0400 Received: from pv50p00im-zteg10011501.me.com ([17.58.6.42]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7Exl-00009D-22 for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:02 -0400 Received: from localhost.localdomain (pv50p00im-dlb-asmtp-mailmevip.me.com [17.56.9.10]) by pv50p00im-zteg10011501.me.com (Postfix) with ESMTPSA id 9CB464A03A3; Thu, 8 Jun 2023 12:41:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ynddal.dk; s=sig1; t=1686228119; bh=LDRzB8NZ046ueAIigp31NIDUT523AGKGB/KGni40fIc=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=AzHk3s4LQkkUbK59q7onxOjYQCVpT2XFXFq++QtFVR3vivKfTxkVbN1gmTstSO1Sq sKVeL/1J2jHb/0SEHfi9T5fAi2q0yVAp67sQT8MU0XL9aSYdySyVd92d14EFFRos6x XchaPAjSV0aLu65yfD5SlkxpexubKicQMxz+fzl+Q+4xF40ss7bOC6YZgo5Dn2DfF9 xMNfcKuYkB6mw9PsWR/2ogRs6nL+4Z5FNbIS8CDS32GY8RK4Eozgp0idKw/LxillbY TI/ET/9vvyujyEgSIXgMI9v80d8t522b6F0XOPaI77YPouYzh9ggtwR9A2BpuHl/px goyCM9J/65MVQ== From: Mads Ynddal To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi , John Snow , Mads Ynddal , Cleber Rosa , Mads Ynddal Subject: [PATCH v3 02/14] simpletrace: annotate magic constants from QEMU code Date: Thu, 8 Jun 2023 14:41:35 +0200 Message-Id: <20230608124147.51125-3-mads@ynddal.dk> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230608124147.51125-1-mads@ynddal.dk> References: <20230608124147.51125-1-mads@ynddal.dk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: w4o9l7lFX98ayaPerg3GkWTMmMOFLID0 X-Proofpoint-ORIG-GUID: w4o9l7lFX98ayaPerg3GkWTMmMOFLID0 X-Proofpoint-Virus-Version: =?UTF-8?Q?vendor=3Dfsecure_engine=3D1.1.170-22c6f66c430a71ce266a39bfe25bc?= =?UTF-8?Q?2903e8d5c8f:6.0.517,18.0.572,17.0.605.474.0000000_definitions?= =?UTF-8?Q?=3D2022-06-21=5F01:2022-06-21=5F01,2020-02-14=5F11,2020-01-23?= =?UTF-8?Q?=5F02_signatures=3D0?= X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 mlxlogscore=330 adultscore=0 spamscore=0 phishscore=0 malwarescore=0 clxscore=1030 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2306080110 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=17.58.6.42; envelope-from=mads@ynddal.dk; helo=pv50p00im-zteg10011501.me.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @ynddal.dk) X-ZM-MESSAGEID: 1686228236227100017 Content-Type: text/plain; charset="utf-8" From: Mads Ynddal It wasn't clear where the constants and structs came from, so I added comments to help. Signed-off-by: Mads Ynddal --- scripts/simpletrace.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scripts/simpletrace.py b/scripts/simpletrace.py index b221d9a241..5c230a1b74 100755 --- a/scripts/simpletrace.py +++ b/scripts/simpletrace.py @@ -16,6 +16,11 @@ =20 __all__ =3D ['Analyzer', 'process', 'run'] =20 +# This is the binary format that the QEMU "simple" trace backend +# emits. There is no specification documentation because the format is +# not guaranteed to be stable. Trace files must be parsed with the +# same trace-events-all file and the same simpletrace.py file that +# QEMU was built with. header_event_id =3D 0xffffffffffffffff header_magic =3D 0xf2b177cb0aa429b4 dropped_event_id =3D 0xfffffffffffffffe --=20 2.38.1 From nobody Fri May 3 04:30:09 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1686228232; cv=none; d=zohomail.com; s=zohoarc; b=QkUjN1YzT9yfKkcvTcl/uKxwTV7ILf6OBoelsmVYXEaZIW43cvmp9G/MYtyuliNsTqZMXlsifyr8TBFGxvYS+hJGTVr3qnRroyaU/MSBsEz89vKeKd5YXr4KGwFPIoAKVzih5hp2EIg6iwdWkiaGhJ9y/RXUVXDbSdHar6JrhmA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686228232; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=tRX60fqCDLTAh6rk1c2F28puMh0+hQQ2UdFppuN+qzw=; b=EcmeStCBLtDSFWT9weHYktCDqdI9ZrNXftSm/asiVmOB76eNgkLsjaJIQbUoOlOLqFskKuqWG6uxH2Ut7lnPh1ZPVZhN73Ziclb/+ZV9N1nNtmo+DEXV986kSFr23UhGRaq07So12LXP9oW6rC5dbkHch7LhXVpXDDSggKfUUlo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1686228232078500.2956178972828; Thu, 8 Jun 2023 05:43:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q7Exs-0002oV-41; Thu, 08 Jun 2023 08:42:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7Exq-0002np-4M for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:06 -0400 Received: from pv50p00im-zteg10011501.me.com ([17.58.6.42]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7Exn-00009i-Rp for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:05 -0400 Received: from localhost.localdomain (pv50p00im-dlb-asmtp-mailmevip.me.com [17.56.9.10]) by pv50p00im-zteg10011501.me.com (Postfix) with ESMTPSA id 8D4C34A0238; Thu, 8 Jun 2023 12:42:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ynddal.dk; s=sig1; t=1686228122; bh=tRX60fqCDLTAh6rk1c2F28puMh0+hQQ2UdFppuN+qzw=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=V6o3OcPJeH+yPYlAGlnEn0nztDJjqUOJ9e0VUN+5DudOrGIE9OdXv8YKc+awDW5sn jaDJh0KvkR1D6kA/7hTVWEvv8MiSXTw+6NO8x86V4o8zxyTc7gFzLPp3LzvzytR49o FUDl3Ri/fynp5WOXbhfAC2qBCLkgBWmSQl6uQ/b0iDIzmg54DBdYFdTADVZ3O/I0t8 MQwjQUNXdtuKY11fqcKqpIiB4YcaY2eqkXPH6u9sm7MmUXtVf1H2qN/0Yb0fn0mDrD WIdMIe5K3vQyzZ6plRayFQ6GnjslQH0h5TKceLiE8SRMrLfgmq0TS+PCpt8k9uSXFF IZJlDLYdfzXWA== From: Mads Ynddal To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi , John Snow , Mads Ynddal , Cleber Rosa , Mads Ynddal Subject: [PATCH v3 03/14] simpletrace: improve parsing of sys.argv; fix files never closed. Date: Thu, 8 Jun 2023 14:41:36 +0200 Message-Id: <20230608124147.51125-4-mads@ynddal.dk> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230608124147.51125-1-mads@ynddal.dk> References: <20230608124147.51125-1-mads@ynddal.dk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: vLZQNx-GoNUympGrWsvWAAiJA8bDkG6D X-Proofpoint-ORIG-GUID: vLZQNx-GoNUympGrWsvWAAiJA8bDkG6D X-Proofpoint-Virus-Version: =?UTF-8?Q?vendor=3Dfsecure_engine=3D1.1.170-22c6f66c430a71ce266a39bfe25bc?= =?UTF-8?Q?2903e8d5c8f:6.0.517,18.0.572,17.0.605.474.0000000_definitions?= =?UTF-8?Q?=3D2022-06-21=5F01:2022-06-21=5F01,2020-02-14=5F11,2020-01-23?= =?UTF-8?Q?=5F02_signatures=3D0?= X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 mlxlogscore=705 adultscore=0 spamscore=0 phishscore=0 malwarescore=0 clxscore=1030 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2306080110 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=17.58.6.42; envelope-from=mads@ynddal.dk; helo=pv50p00im-zteg10011501.me.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @ynddal.dk) X-ZM-MESSAGEID: 1686228234254100014 Content-Type: text/plain; charset="utf-8" From: Mads Ynddal The arguments extracted from `sys.argv` named and unpacked to make it clear what the arguments are and what they're used for. The two input files were opened, but never explicitly closed. File usage changed to use `with` statement to take care of this. At the same time, ownership of the file-object is moved up to `run` function. Added option to process to support file-like objects. Signed-off-by: Mads Ynddal --- scripts/simpletrace.py | 50 ++++++++++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/scripts/simpletrace.py b/scripts/simpletrace.py index 5c230a1b74..283b5918a1 100755 --- a/scripts/simpletrace.py +++ b/scripts/simpletrace.py @@ -9,6 +9,7 @@ # # For help see docs/devel/tracing.rst =20 +import sys import struct import inspect from tracetool import read_events, Event @@ -51,7 +52,6 @@ def get_record(edict, idtoname, rechdr, fobj): try: event =3D edict[name] except KeyError as e: - import sys sys.stderr.write('%s event is logged but is not declared ' \ 'in the trace events file, try using ' \ 'trace-events-all instead.\n' % str(e)) @@ -172,11 +172,28 @@ def end(self): pass =20 def process(events, log, analyzer, read_header=3DTrue): - """Invoke an analyzer on each event in a log.""" + """Invoke an analyzer on each event in a log. + Args: + events (file-object or list or str): events list or file-like obje= ct or file path as str to read event data from + log (file-object or str): file-like object or file path as str to = read log data from + analyzer (Analyzer): Instance of Analyzer to interpret the event d= ata + read_header (bool, optional): Whether to read header data from the= log data. Defaults to True. + """ + if isinstance(events, str): - events =3D read_events(open(events, 'r'), events) + with open(events, 'r') as f: + events_list =3D read_events(f, events) + elif isinstance(events, list): + # Treat as a list of events already produced by tracetool.read_eve= nts + events_list =3D events + else: + # Treat as an already opened file-object + events_list =3D read_events(events, events.name) + + close_log =3D False if isinstance(log, str): log =3D open(log, 'rb') + close_log =3D True =20 if read_header: read_trace_header(log) @@ -187,12 +204,12 @@ def process(events, log, analyzer, read_header=3DTrue= ): edict =3D {"dropped": dropped_event} idtoname =3D {dropped_event_id: "dropped"} =20 - for event in events: + for event in events_list: edict[event.name] =3D event =20 # If there is no header assume event ID mapping matches events list if not read_header: - for event_id, event in enumerate(events): + for event_id, event in enumerate(events_list): idtoname[event_id] =3D event.name =20 def build_fn(analyzer, event): @@ -225,24 +242,25 @@ def build_fn(analyzer, event): fn_cache[event_num](event, rec) analyzer.end() =20 + if close_log: + log.close() + def run(analyzer): """Execute an analyzer on a trace file given on the command-line. =20 This function is useful as a driver for simple analysis scripts. More advanced scripts will want to call process() instead.""" - import sys - - read_header =3D True - if len(sys.argv) =3D=3D 4 and sys.argv[1] =3D=3D '--no-header': - read_header =3D False - del sys.argv[1] - elif len(sys.argv) !=3D 3: - sys.stderr.write('usage: %s [--no-header] ' \ - '\n' % sys.argv[0]) + + try: + # NOTE: See built-in `argparse` module for a more robust cli inter= face + *no_header, trace_event_path, trace_file_path =3D sys.argv[1:] + assert no_header =3D=3D [] or no_header =3D=3D ['--no-header'], 'I= nvalid no-header argument' + except (AssertionError, ValueError): + sys.stderr.write(f'usage: {sys.argv[0]} [--no-header] \n') sys.exit(1) =20 - events =3D read_events(open(sys.argv[1], 'r'), sys.argv[1]) - process(events, sys.argv[2], analyzer, read_header=3Dread_header) + with open(trace_event_path, 'r') as events_fobj, open(trace_file_path,= 'rb') as log_fobj: + process(events_fobj, log_fobj, analyzer, read_header=3Dnot no_head= er) =20 if __name__ =3D=3D '__main__': class Formatter(Analyzer): --=20 2.38.1 From nobody Fri May 3 04:30:09 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1686228159; cv=none; d=zohomail.com; s=zohoarc; b=RDQexv1Zg04WfZ7Mm2B648J4m2R5AsLGE7uCzuaX1f7dFzjpKcWT8bxPguyGzuFMhE9Yw2jiQPFjNAtidm1Flrf1v1quETJMU1EHMD2Se7jSWTBll55IdWCNenuJ7YQt+a20+9g2G2GCIptybVAXhBRtLr3KrRKSCJ2A4IwgIRM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686228159; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=P9WjvnEfg+gRxF9hXm33GvQAhcZGvYrETbTjf9cgSgk=; b=Nh5fJEqoIMTU0jmHxy25KMbA7EOMyYGwzAx7rcGNWzaFK0WDB45JsUxzGskVN4ayJBvwPI3CJBA/+k1oBaZzx0EMi1mq7lTzH3Y/0BM8N7WOj3cdE20LYGES9in99b+9A4ZAh/wyfSx7OOGWhPznhf3EZt9IwG6fy9OE7ZbCrUU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1686228159098393.788434078368; Thu, 8 Jun 2023 05:42:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q7Ext-0002pu-95; Thu, 08 Jun 2023 08:42:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7Exs-0002of-5X for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:08 -0400 Received: from pv50p00im-zteg10011501.me.com ([17.58.6.42]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7Exq-0000A8-8V for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:07 -0400 Received: from localhost.localdomain (pv50p00im-dlb-asmtp-mailmevip.me.com [17.56.9.10]) by pv50p00im-zteg10011501.me.com (Postfix) with ESMTPSA id 21FB84A03A3; Thu, 8 Jun 2023 12:42:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ynddal.dk; s=sig1; t=1686228125; bh=P9WjvnEfg+gRxF9hXm33GvQAhcZGvYrETbTjf9cgSgk=; h=From:To:Subject:Date:Message-Id:MIME-Version:Content-Type; b=f76o2qXZ3oErEw6cclkmBdv3isYZ9eODoWRiruaC8tdfYRAcPicVAjZEhBvQyPrDP iHUdKDW2dlb5Z9sjpXhI641RtqKK9CHku9vjvRiE2A8SDnphAHmigODOeMZxr8tycT rExucFV3bbGZxGkzn3clNYbhcPI8+whaXHOCuTMGHqSZR3LvYXtjLPaRN7cHKBCN8t D2xw0D86tL73nVHbYxWuhCMxnjY309hk8ljasoz6EVLdDJWb9GXiRfa9E9owZF4Iph z7HqbqnveGfdDShz+5+d5IEprhWm37E1v8Yi8WvWiAD/l9oEIGAWRUnAYge+PoIsKJ YwD+zFFqR0Eng== From: Mads Ynddal To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi , John Snow , Mads Ynddal , Cleber Rosa , Mads Ynddal , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v3 04/14] simpletrace: changed naming of edict and idtoname to improve readability Date: Thu, 8 Jun 2023 14:41:37 +0200 Message-Id: <20230608124147.51125-5-mads@ynddal.dk> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230608124147.51125-1-mads@ynddal.dk> References: <20230608124147.51125-1-mads@ynddal.dk> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: kNvxn5E00cVhDyQPR1UScSoDIuCvIl25 X-Proofpoint-ORIG-GUID: kNvxn5E00cVhDyQPR1UScSoDIuCvIl25 X-Proofpoint-Virus-Version: =?UTF-8?Q?vendor=3Dfsecure_engine=3D1.1.170-22c6f66c430a71ce266a39bfe25bc?= =?UTF-8?Q?2903e8d5c8f:6.0.517,18.0.572,17.0.605.474.0000000_definitions?= =?UTF-8?Q?=3D2022-06-21=5F01:2022-06-21=5F01,2020-02-14=5F11,2020-01-23?= =?UTF-8?Q?=5F02_signatures=3D0?= X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 mlxlogscore=775 adultscore=0 spamscore=0 phishscore=0 malwarescore=0 clxscore=1030 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2306080110 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=17.58.6.42; envelope-from=mads@ynddal.dk; helo=pv50p00im-zteg10011501.me.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @ynddal.dk) X-ZM-MESSAGEID: 1686228160281100002 From: Mads Ynddal Readability is subjective, but I've expanded the naming of the variables and arguments, to help with understanding for new eyes on the code. Signed-off-by: Mads Ynddal Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Stefan Hajnoczi --- scripts/simpletrace.py | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/scripts/simpletrace.py b/scripts/simpletrace.py index 283b5918a1..09511f624d 100755 --- a/scripts/simpletrace.py +++ b/scripts/simpletrace.py @@ -40,17 +40,17 @@ def read_header(fobj, hfmt): return None return struct.unpack(hfmt, hdr) =20 -def get_record(edict, idtoname, rechdr, fobj): +def get_record(event_mapping, event_id_to_name, rechdr, fobj): """Deserialize a trace record from a file into a tuple (name, timestamp, pid, arg1, ..., arg6).""" if rechdr is None: return None if rechdr[0] !=3D dropped_event_id: event_id =3D rechdr[0] - name =3D idtoname[event_id] + name =3D event_id_to_name[event_id] rec =3D (name, rechdr[1], rechdr[3]) try: - event =3D edict[name] + event =3D event_mapping[name] except KeyError as e: sys.stderr.write('%s event is logged but is not declared ' \ 'in the trace events file, try using ' \ @@ -79,10 +79,10 @@ def get_mapping(fobj): =20 return (event_id, name) =20 -def read_record(edict, idtoname, fobj): +def read_record(event_mapping, event_id_to_name, fobj): """Deserialize a trace record from a file into a tuple (event_num, tim= estamp, pid, arg1, ..., arg6).""" rechdr =3D read_header(fobj, rec_header_fmt) - return get_record(edict, idtoname, rechdr, fobj) + return get_record(event_mapping, event_id_to_name, rechdr, fobj) =20 def read_trace_header(fobj): """Read and verify trace file header""" @@ -103,14 +103,14 @@ def read_trace_header(fobj): raise ValueError('Log format %d not supported with this QEMU relea= se!' % log_version) =20 -def read_trace_records(edict, idtoname, fobj): +def read_trace_records(event_mapping, event_id_to_name, fobj): """Deserialize trace records from a file, yielding record tuples (even= t_num, timestamp, pid, arg1, ..., arg6). =20 - Note that `idtoname` is modified if the file contains mapping records. + Note that `event_id_to_name` is modified if the file contains mapping = records. =20 Args: - edict (str -> Event): events dict, indexed by name - idtoname (int -> str): event names dict, indexed by event ID + event_mapping (str -> Event): events dict, indexed by name + event_id_to_name (int -> str): event names dict, indexed by event = ID fobj (file): input file =20 """ @@ -122,9 +122,9 @@ def read_trace_records(edict, idtoname, fobj): (rectype, ) =3D struct.unpack('=3DQ', t) if rectype =3D=3D record_type_mapping: event_id, name =3D get_mapping(fobj) - idtoname[event_id] =3D name + event_id_to_name[event_id] =3D name else: - rec =3D read_record(edict, idtoname, fobj) + rec =3D read_record(event_mapping, event_id_to_name, fobj) =20 yield rec =20 @@ -201,16 +201,16 @@ def process(events, log, analyzer, read_header=3DTrue= ): frameinfo =3D inspect.getframeinfo(inspect.currentframe()) dropped_event =3D Event.build("Dropped_Event(uint64_t num_events_dropp= ed)", frameinfo.lineno + 1, frameinfo.filename) - edict =3D {"dropped": dropped_event} - idtoname =3D {dropped_event_id: "dropped"} + event_mapping =3D {"dropped": dropped_event} + event_id_to_name =3D {dropped_event_id: "dropped"} =20 for event in events_list: - edict[event.name] =3D event + event_mapping[event.name] =3D event =20 # If there is no header assume event ID mapping matches events list if not read_header: for event_id, event in enumerate(events_list): - idtoname[event_id] =3D event.name + event_id_to_name[event_id] =3D event.name =20 def build_fn(analyzer, event): if isinstance(event, str): @@ -234,9 +234,9 @@ def build_fn(analyzer, event): =20 analyzer.begin() fn_cache =3D {} - for rec in read_trace_records(edict, idtoname, log): + for rec in read_trace_records(event_mapping, event_id_to_name, log): event_num =3D rec[0] - event =3D edict[event_num] + event =3D event_mapping[event_num] if event_num not in fn_cache: fn_cache[event_num] =3D build_fn(analyzer, event) fn_cache[event_num](event, rec) --=20 2.38.1 From nobody Fri May 3 04:30:09 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1686228247; cv=none; d=zohomail.com; s=zohoarc; b=S6p/nYlc5vtmltlx9rLWkLzsut9ZLcrUnUxhC4S0uNGcZy5F+Q0ade4YL520HK90nPr5tAgpiPnBOrcsXD4DB2DuASgL3DPrB9wYhTrfDevnPk+ztnLBv5TKpa3AXWP6/9uNMv8sJxlsTpwkOn3HunoKh5d5MdArJ1r+WdUJ3kQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686228247; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=2eo6M7Po98p7txvfneyaWrztwzb3AvIPCmOUr/Bqc1k=; b=NUVDTyt64hN1Gfy4QwnitlxHP3CRU5wtfjMGGkrcwMea2wRxTT59zgaOgv+Nk2OZpZMZHWSi1q1oqWK7rJHckYJlGg6Dt4vqnRvrI9VnimJPE+31a7Hip4RIjoyO8/XyIfh6PAduZEruCYLfgKbjbbsTXifLikZeFPY5ug6pRjk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1686228247406689.6814016105599; Thu, 8 Jun 2023 05:44:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q7Exw-0002sn-Vi; Thu, 08 Jun 2023 08:42:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7Exv-0002qw-AJ for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:11 -0400 Received: from pv50p00im-zteg10011501.me.com ([17.58.6.42]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7Exs-0000Af-QE for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:11 -0400 Received: from localhost.localdomain (pv50p00im-dlb-asmtp-mailmevip.me.com [17.56.9.10]) by pv50p00im-zteg10011501.me.com (Postfix) with ESMTPSA id D60074A0388; Thu, 8 Jun 2023 12:42:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ynddal.dk; s=sig1; t=1686228127; bh=2eo6M7Po98p7txvfneyaWrztwzb3AvIPCmOUr/Bqc1k=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=Gnq6IA8XdQk4ng3MzcW9AtCfgKW0bm7aJ6Y4D+25Ph8tu17EH6ko4nvhp6ytqwZrC TYIZ8pYcqrMhcVn749Tch+zuli8DugdbrKnjanRs3srOPkQPn7BpO7KIlwoHI1SrAB ksZ+c8vWs7OhWlZ9Biy2tMXXLvFU6grypylsJYnuhngyaEcBAnMCGErN7ubMdXKSeq ZBR0pJrhYPrV96U/GmG6f0SCX0oseuAXeHokGl/E7EhaaaHT1EiwohW5tX9lNEIjhv Km87ean/9G0s+0dQvfkuM6J1E6KO8DEK3SoJTNSmPKcJTrvnikvekgane9p8Iu7Xj5 9xcP5VqKdHU5Q== From: Mads Ynddal To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi , John Snow , Mads Ynddal , Cleber Rosa , Mads Ynddal Subject: [PATCH v3 05/14] simpletrace: update code for Python 3.11 Date: Thu, 8 Jun 2023 14:41:38 +0200 Message-Id: <20230608124147.51125-6-mads@ynddal.dk> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230608124147.51125-1-mads@ynddal.dk> References: <20230608124147.51125-1-mads@ynddal.dk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: UmUVgFTI6PUzJP7VIxxnwT-Z3Ksj4nUr X-Proofpoint-ORIG-GUID: UmUVgFTI6PUzJP7VIxxnwT-Z3Ksj4nUr X-Proofpoint-Virus-Version: =?UTF-8?Q?vendor=3Dfsecure_engine=3D1.1.170-22c6f66c430a71ce266a39bfe25bc?= =?UTF-8?Q?2903e8d5c8f:6.0.517,18.0.572,17.0.605.474.0000000_definitions?= =?UTF-8?Q?=3D2022-06-21=5F01:2022-06-21=5F01,2020-02-14=5F11,2020-01-23?= =?UTF-8?Q?=5F02_signatures=3D0?= X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 mlxlogscore=894 adultscore=0 spamscore=0 phishscore=0 malwarescore=0 clxscore=1030 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2306080110 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=17.58.6.42; envelope-from=mads@ynddal.dk; helo=pv50p00im-zteg10011501.me.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @ynddal.dk) X-ZM-MESSAGEID: 1686228249252100003 Content-Type: text/plain; charset="utf-8" From: Mads Ynddal The call to `getargspec` was deprecated and in Python 3.11 it has been removed in favor of `getfullargspec`. `getfullargspec` is compatible with QEMU's requirement of at least Python version 3.6. Signed-off-by: Mads Ynddal Reviewed-by: Stefan Hajnoczi --- scripts/simpletrace.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/simpletrace.py b/scripts/simpletrace.py index 09511f624d..971b2a0f6a 100755 --- a/scripts/simpletrace.py +++ b/scripts/simpletrace.py @@ -221,7 +221,7 @@ def build_fn(analyzer, event): return analyzer.catchall =20 event_argcount =3D len(event.args) - fn_argcount =3D len(inspect.getargspec(fn)[0]) - 1 + fn_argcount =3D len(inspect.getfullargspec(fn)[0]) - 1 if fn_argcount =3D=3D event_argcount + 1: # Include timestamp as first argument return lambda _, rec: fn(*(rec[1:2] + rec[3:3 + event_argcount= ])) --=20 2.38.1 From nobody Fri May 3 04:30:09 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1686228192; cv=none; d=zohomail.com; s=zohoarc; b=OkVjzbhBMEzsOgBbW6CiNFLYA9f+nH89/szp6lK8HE6qYl17PuRd/xmTT20gYYN2CrmlGVruHoLTbzNBaHvO4EW3hvMFSqQuTMv8/Nu4A1w/WF2iUEB5fm4ZAptYd2IcjqxQRcB/lDMXSUtEThdHhDx1eGtqY/KoQbpwKsu9m3c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686228192; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=tv8iQdRgnNjq6DBzxFJS9huknQBhYuHeuL8iwQFn9rw=; b=H+w+c0yX7zLYIFfopA75mzTYzjktJJGFw7l9vAibL3wY/y9oZjI5UMnJo62nkUOyDOXrFvFygjx91FexpG/Ocd3mW0WcHnRYfEpYaeMb3yktgE9CtPeWa6w/8JQ/Jwp/PTGE++0H3uFjH0jAmrGFn0ONa1vNt90uIgdZ6Q5hEDk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1686228192873309.4198338464794; Thu, 8 Jun 2023 05:43:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q7Exy-0002to-Ma; Thu, 08 Jun 2023 08:42:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7Exx-0002tE-HP for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:13 -0400 Received: from pv50p00im-zteg10011501.me.com ([17.58.6.42]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7Exv-0000B3-Nc for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:13 -0400 Received: from localhost.localdomain (pv50p00im-dlb-asmtp-mailmevip.me.com [17.56.9.10]) by pv50p00im-zteg10011501.me.com (Postfix) with ESMTPSA id 713564A039A; Thu, 8 Jun 2023 12:42:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ynddal.dk; s=sig1; t=1686228130; bh=tv8iQdRgnNjq6DBzxFJS9huknQBhYuHeuL8iwQFn9rw=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=BqtJMimNDIA/G28d300h0nY1fen4uENeoOwWzeBZKkt77GOZPPdlAzmxLTyQ1LpUv TlB7zxbIEg4yfUPVWZx/O8UcpFx5gzZzfV7/z86miS4YQZ667F2ri7Y5Q937zt4tAV Zh7GicAxUwhUd1FMMOI/g97WCm/5g64adzLs4I099EnCzNl1yMcTKybIJ5Sl8Gr3Xv R7vaub7gRFEqqFNijDzxWk/HzJIatFvwOekvemy9F2sAsT+7/Sb7jmJRpUUpf+cJrF K8RLsnXJX9fQKMS1WHQzUXEmrUaePU3eeMJDKwRcYQC0nYxXuJvgig8hBcvAfyeftB 8oierhutnSYEw== From: Mads Ynddal To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi , John Snow , Mads Ynddal , Cleber Rosa , Mads Ynddal Subject: [PATCH v3 06/14] simpletrace: improved error handling on struct unpack Date: Thu, 8 Jun 2023 14:41:39 +0200 Message-Id: <20230608124147.51125-7-mads@ynddal.dk> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230608124147.51125-1-mads@ynddal.dk> References: <20230608124147.51125-1-mads@ynddal.dk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: Ldd-rNpu2EY8pJ8cxfbSgDAgfkD1GHIT X-Proofpoint-ORIG-GUID: Ldd-rNpu2EY8pJ8cxfbSgDAgfkD1GHIT X-Proofpoint-Virus-Version: =?UTF-8?Q?vendor=3Dfsecure_engine=3D1.1.170-22c6f66c430a71ce266a39bfe25bc?= =?UTF-8?Q?2903e8d5c8f:6.0.517,18.0.572,17.0.605.474.0000000_definitions?= =?UTF-8?Q?=3D2022-06-21=5F01:2022-06-21=5F01,2020-02-14=5F11,2020-01-23?= =?UTF-8?Q?=5F02_signatures=3D0?= X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 mlxlogscore=314 adultscore=0 spamscore=0 phishscore=0 malwarescore=0 clxscore=1030 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2306080110 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=17.58.6.42; envelope-from=mads@ynddal.dk; helo=pv50p00im-zteg10011501.me.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @ynddal.dk) X-ZM-MESSAGEID: 1686228195067100003 Content-Type: text/plain; charset="utf-8" From: Mads Ynddal A failed call to `read_header` wouldn't be handled the same for the two different code paths (one path would try to use `None` as a list). Changed to raise exception to be handled centrally. This also allows for easier unpacking, as errors has been filtered out. Signed-off-by: Mads Ynddal --- scripts/simpletrace.py | 41 ++++++++++++++++------------------------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/scripts/simpletrace.py b/scripts/simpletrace.py index 971b2a0f6a..8aea0d169b 100755 --- a/scripts/simpletrace.py +++ b/scripts/simpletrace.py @@ -37,26 +37,24 @@ def read_header(fobj, hfmt): hlen =3D struct.calcsize(hfmt) hdr =3D fobj.read(hlen) if len(hdr) !=3D hlen: - return None + raise ValueError('Error reading header. Wrong filetype provided?') return struct.unpack(hfmt, hdr) =20 def get_record(event_mapping, event_id_to_name, rechdr, fobj): """Deserialize a trace record from a file into a tuple (name, timestamp, pid, arg1, ..., arg6).""" - if rechdr is None: - return None - if rechdr[0] !=3D dropped_event_id: - event_id =3D rechdr[0] + event_id, timestamp_ns, length, pid =3D rechdr + if event_id !=3D dropped_event_id: name =3D event_id_to_name[event_id] - rec =3D (name, rechdr[1], rechdr[3]) try: event =3D event_mapping[name] except KeyError as e: - sys.stderr.write('%s event is logged but is not declared ' \ + sys.stderr.write(f'{e} event is logged but is not declared ' \ 'in the trace events file, try using ' \ - 'trace-events-all instead.\n' % str(e)) + 'trace-events-all instead.\n') sys.exit(1) =20 + rec =3D (name, timestamp_ns, pid) for type, name in event.args: if is_string(type): l =3D fobj.read(4) @@ -67,9 +65,8 @@ def get_record(event_mapping, event_id_to_name, rechdr, f= obj): (value,) =3D struct.unpack('=3DQ', fobj.read(8)) rec =3D rec + (value,) else: - rec =3D ("dropped", rechdr[1], rechdr[3]) - (value,) =3D struct.unpack('=3DQ', fobj.read(8)) - rec =3D rec + (value,) + (dropped_count,) =3D struct.unpack('=3DQ', fobj.read(8)) + rec =3D ("dropped", timestamp_ns, pid, dropped_count) return rec =20 def get_mapping(fobj): @@ -86,22 +83,16 @@ def read_record(event_mapping, event_id_to_name, fobj): =20 def read_trace_header(fobj): """Read and verify trace file header""" - header =3D read_header(fobj, log_header_fmt) - if header is None: - raise ValueError('Not a valid trace file!') - if header[0] !=3D header_event_id: - raise ValueError('Not a valid trace file, header id %d !=3D %d' % - (header[0], header_event_id)) - if header[1] !=3D header_magic: - raise ValueError('Not a valid trace file, header magic %d !=3D %d'= % - (header[1], header_magic)) - - log_version =3D header[2] + _header_event_id, _header_magic, log_version =3D read_header(fobj, log= _header_fmt) + if _header_event_id !=3D header_event_id: + raise ValueError(f'Not a valid trace file, header id {_header_even= t_id} !=3D {header_event_id}') + if _header_magic !=3D header_magic: + raise ValueError(f'Not a valid trace file, header magic {_header_m= agic} !=3D {header_magic}') + if log_version not in [0, 2, 3, 4]: - raise ValueError('Unknown version of tracelog format!') + raise ValueError(f'Unknown version {log_version} of tracelog forma= t!') if log_version !=3D 4: - raise ValueError('Log format %d not supported with this QEMU relea= se!' - % log_version) + raise ValueError(f'Log format {log_version} not supported with thi= s QEMU release!') =20 def read_trace_records(event_mapping, event_id_to_name, fobj): """Deserialize trace records from a file, yielding record tuples (even= t_num, timestamp, pid, arg1, ..., arg6). --=20 2.38.1 From nobody Fri May 3 04:30:09 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1686228240; cv=none; d=zohomail.com; s=zohoarc; b=L67LsLkGAegr8Z+Vkqen+WCDM3MICDRV5A3AqofLnWSkhfAnC0kB8FJxU8ctiAFmPScfwinz1pIaeu42Jb1Jf3rn/ztxxBYIXYApE4/2OPAoufdcFurMCDVofTujF29Duhzm7r8nvj072qrEzyOyTQaJXdNR+PyF+QpPjUBZKTo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686228240; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=W83Ca9yBFXSN52i0UPeLf92nJZuoNUL362rz88h/WN4=; b=NMan40UrMqccWtrcg56UzGNTr6MHkR90aPisamYcIRgbSewkAkVHlOMZeELTpgHZ0H2j7JrVPYvyKn+C1BSGiw001joW71ByqV80XP2Zt9mJYwk0yDfp78Rlv3grp1eljg4aLX43M72mzN8d9eWI0PzADQAKrHP1OtbighVCIwo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16862282405555.702863750544907; Thu, 8 Jun 2023 05:44:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q7Ey2-0002xW-Oh; Thu, 08 Jun 2023 08:42:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7Ey0-0002vW-T4 for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:16 -0400 Received: from pv50p00im-zteg10011501.me.com ([17.58.6.42]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7Exy-0000Bc-Do for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:16 -0400 Received: from localhost.localdomain (pv50p00im-dlb-asmtp-mailmevip.me.com [17.56.9.10]) by pv50p00im-zteg10011501.me.com (Postfix) with ESMTPSA id 5482A4A03A0; Thu, 8 Jun 2023 12:42:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ynddal.dk; s=sig1; t=1686228133; bh=W83Ca9yBFXSN52i0UPeLf92nJZuoNUL362rz88h/WN4=; h=From:To:Subject:Date:Message-Id:MIME-Version:Content-Type; b=R7GEZXOthYqS7VFbBU55ADdG16k4oAAHG/wJZRGK9d8P+WSvNWZMRA89n1D6PxZyj dg1Hh36DS73gW/yADe7RTJls3GYe8Dsr16Q8edftLmLk0xKJDjt92cNfb5yffI3nNc JjMp/FMKs7YjQa7wLF0lvJBxe5Iq+lnS0LT3Z/PQcrYI32ItZB6RhiQwdZZICxjfUw Xu/p5PVZ30thWLglld9Ubeec5uuP08Y778bDrkIV6+Wt3AyybLghql9RyUwKY3nrh4 poK/k/xZEjngP+ggSEYpNxdtUWCiIRoPTvwgjDurUPHDsYdutCM5AownsntzGVKrCZ gGAYBcOGiXQqw== From: Mads Ynddal To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi , John Snow , Mads Ynddal , Cleber Rosa , Mads Ynddal , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v3 07/14] simpletrace: define exception and add handling Date: Thu, 8 Jun 2023 14:41:40 +0200 Message-Id: <20230608124147.51125-8-mads@ynddal.dk> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230608124147.51125-1-mads@ynddal.dk> References: <20230608124147.51125-1-mads@ynddal.dk> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: VdcsLlJvI0sQqLH5Ntw6o2pvEVk8GzGG X-Proofpoint-ORIG-GUID: VdcsLlJvI0sQqLH5Ntw6o2pvEVk8GzGG X-Proofpoint-Virus-Version: =?UTF-8?Q?vendor=3Dfsecure_engine=3D1.1.170-22c6f66c430a71ce266a39bfe25bc?= =?UTF-8?Q?2903e8d5c8f:6.0.517,18.0.572,17.0.605.474.0000000_definitions?= =?UTF-8?Q?=3D2022-06-21=5F01:2022-06-21=5F01,2020-02-14=5F11,2020-01-23?= =?UTF-8?Q?=5F02_signatures=3D0?= X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 mlxlogscore=687 adultscore=0 spamscore=0 phishscore=0 malwarescore=0 clxscore=1030 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2306080110 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=17.58.6.42; envelope-from=mads@ynddal.dk; helo=pv50p00im-zteg10011501.me.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @ynddal.dk) X-ZM-MESSAGEID: 1686228242209100004 From: Mads Ynddal Define `SimpleException` to differentiate our exceptions from generic exceptions (IOError, etc.). Adapted simpletrace to support this and output to stderr. Signed-off-by: Mads Ynddal Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- scripts/simpletrace.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/scripts/simpletrace.py b/scripts/simpletrace.py index 8aea0d169b..229b10aa99 100755 --- a/scripts/simpletrace.py +++ b/scripts/simpletrace.py @@ -32,12 +32,15 @@ log_header_fmt =3D '=3DQQQ' rec_header_fmt =3D '=3DQQII' =20 +class SimpleException(Exception): + pass + def read_header(fobj, hfmt): '''Read a trace record header''' hlen =3D struct.calcsize(hfmt) hdr =3D fobj.read(hlen) if len(hdr) !=3D hlen: - raise ValueError('Error reading header. Wrong filetype provided?') + raise SimpleException('Error reading header. Wrong filetype provid= ed?') return struct.unpack(hfmt, hdr) =20 def get_record(event_mapping, event_id_to_name, rechdr, fobj): @@ -49,10 +52,10 @@ def get_record(event_mapping, event_id_to_name, rechdr,= fobj): try: event =3D event_mapping[name] except KeyError as e: - sys.stderr.write(f'{e} event is logged but is not declared ' \ - 'in the trace events file, try using ' \ - 'trace-events-all instead.\n') - sys.exit(1) + raise SimpleException( + f'{e} event is logged but is not declared in the trace eve= nts' + 'file, try using trace-events-all instead.' + ) =20 rec =3D (name, timestamp_ns, pid) for type, name in event.args: @@ -247,8 +250,7 @@ def run(analyzer): *no_header, trace_event_path, trace_file_path =3D sys.argv[1:] assert no_header =3D=3D [] or no_header =3D=3D ['--no-header'], 'I= nvalid no-header argument' except (AssertionError, ValueError): - sys.stderr.write(f'usage: {sys.argv[0]} [--no-header] \n') - sys.exit(1) + raise SimpleException(f'usage: {sys.argv[0]} [--no-header] \n') =20 with open(trace_event_path, 'r') as events_fobj, open(trace_file_path,= 'rb') as log_fobj: process(events_fobj, log_fobj, analyzer, read_header=3Dnot no_head= er) @@ -276,4 +278,8 @@ def catchall(self, event, rec): i +=3D 1 print(' '.join(fields)) =20 - run(Formatter()) + try: + run(Formatter()) + except SimpleException as e: + sys.stderr.write(str(e) + "\n") + sys.exit(1) --=20 2.38.1 From nobody Fri May 3 04:30:09 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1686228273; cv=none; d=zohomail.com; s=zohoarc; b=R4s6BvV43oeNmjSGQecz43bg8CtsS3+zLMnUwktKm+wzmaWVv79fWD0rheT5BZJNKUF47B+FHFJgcYvISqnwQCbDZtJdA19j7XLEugUBlaPG2SI9XyZYGtt8iDQvDapkvulwqC7PlmkQiG99jtuD1xTjwZkzpFP9w5zX3P2rLwc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686228273; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=zbUuQMImgFXI+shnIyEaHz7dPAc3pcIDgFyYbkPOa8A=; b=m/n7H3XT9RS921Y4HQgsflwYWzChvD7MU3qqbPX+hsBuVgjHs/vQK1N+QcY2pQysDfGafYWZ7hhZuH7zC+bPTpTy/caQG+0WjHT3EaAfNLUSij3Snr/rxVJaVih4ShqFMSEgXyj8yjAmkyc3Pj4tnTS0h36GvswdY16elkV4pTE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1686228273554670.9510657223692; Thu, 8 Jun 2023 05:44:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q7Ey7-0002y1-87; Thu, 08 Jun 2023 08:42:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7Ey4-0002xc-D6 for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:20 -0400 Received: from pv50p00im-zteg10011501.me.com ([17.58.6.42]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7Ey0-0000C0-S3 for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:19 -0400 Received: from localhost.localdomain (pv50p00im-dlb-asmtp-mailmevip.me.com [17.56.9.10]) by pv50p00im-zteg10011501.me.com (Postfix) with ESMTPSA id F26364A03A2; Thu, 8 Jun 2023 12:42:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ynddal.dk; s=sig1; t=1686228135; bh=zbUuQMImgFXI+shnIyEaHz7dPAc3pcIDgFyYbkPOa8A=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=i3uxK5exSoEbGZFd/FwlVi5d38WnHooiTdjYzzKjEOlFEd20yBPKowiCRpJOLZ9La +Q6TQPg74zRxZ3KA3UenOZd0eadPqlPo+XLPna68BKAj64pWzdKZIzMOwavbDLvqnS 2FgkMtg9BlwFnjS4fylVRThJ7ui8UWXwQISiioSR7DRRl3ZsQMxIfzdidZkteOpjPU SMF4aKgzU+bOj2lYhbMTCD4aYBNsMqpaiHluetcquPuAu7HgX+jfa57brWYl7FGudY IdTfvrXIpftQP5IlyQjPpdvGcSDK09QI5Y6O19KIUzsYIhNbZnd5ei9+neL4arPdTP JBW8rUX930qbg== From: Mads Ynddal To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi , John Snow , Mads Ynddal , Cleber Rosa , Mads Ynddal Subject: [PATCH v3 08/14] simpletrace: made Analyzer into context-manager Date: Thu, 8 Jun 2023 14:41:41 +0200 Message-Id: <20230608124147.51125-9-mads@ynddal.dk> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230608124147.51125-1-mads@ynddal.dk> References: <20230608124147.51125-1-mads@ynddal.dk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: gBpef1FwqotnE7WppMsAVyVlazj0tBoA X-Proofpoint-ORIG-GUID: gBpef1FwqotnE7WppMsAVyVlazj0tBoA X-Proofpoint-Virus-Version: =?UTF-8?Q?vendor=3Dfsecure_engine=3D1.1.170-22c6f66c430a71ce266a39bfe25bc?= =?UTF-8?Q?2903e8d5c8f:6.0.517,18.0.572,17.0.605.474.0000000_definitions?= =?UTF-8?Q?=3D2022-06-21=5F01:2022-06-21=5F01,2020-02-14=5F11,2020-01-23?= =?UTF-8?Q?=5F02_signatures=3D0?= X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 mlxlogscore=813 adultscore=0 spamscore=0 phishscore=0 malwarescore=0 clxscore=1030 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2306080110 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=17.58.6.42; envelope-from=mads@ynddal.dk; helo=pv50p00im-zteg10011501.me.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @ynddal.dk) X-ZM-MESSAGEID: 1686228275440100001 Content-Type: text/plain; charset="utf-8" From: Mads Ynddal Instead of explicitly calling `begin` and `end`, we can change the class to use the context-manager paradigm. This is mostly a styling choice, used in modern Python code. But it also allows for more advanced analyzers to handle exceptions gracefully in the `__exit__` method (not demonstrated here). Signed-off-by: Mads Ynddal --- scripts/simpletrace.py | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/scripts/simpletrace.py b/scripts/simpletrace.py index 229b10aa99..7f514d1577 100755 --- a/scripts/simpletrace.py +++ b/scripts/simpletrace.py @@ -122,12 +122,13 @@ def read_trace_records(event_mapping, event_id_to_nam= e, fobj): =20 yield rec =20 -class Analyzer(object): +class Analyzer: """A trace file analyzer which processes trace records. =20 An analyzer can be passed to run() or process(). The begin() method is invoked, then each trace record is processed, and finally the end() me= thod - is invoked. + is invoked. When Analyzer is used as a context-manager (using the `wit= h` + statement), begin() and end() are called automatically. =20 If a method matching a trace event name exists, it is invoked to proce= ss that trace record. Otherwise the catchall() method is invoked. @@ -165,6 +166,15 @@ def end(self): """Called at the end of the trace.""" pass =20 + def __enter__(self): + self.begin() + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + if exc_type is None: + self.end() + return False + def process(events, log, analyzer, read_header=3DTrue): """Invoke an analyzer on each event in a log. Args: @@ -226,15 +236,14 @@ def build_fn(analyzer, event): # Just arguments, no timestamp or pid return lambda _, rec: fn(*rec[3:3 + event_argcount]) =20 - analyzer.begin() - fn_cache =3D {} - for rec in read_trace_records(event_mapping, event_id_to_name, log): - event_num =3D rec[0] - event =3D event_mapping[event_num] - if event_num not in fn_cache: - fn_cache[event_num] =3D build_fn(analyzer, event) - fn_cache[event_num](event, rec) - analyzer.end() + with analyzer: + fn_cache =3D {} + for rec in read_trace_records(event_mapping, event_id_to_name, log= ): + event_num =3D rec[0] + event =3D event_mapping[event_num] + if event_num not in fn_cache: + fn_cache[event_num] =3D build_fn(analyzer, event) + fn_cache[event_num](event, rec) =20 if close_log: log.close() --=20 2.38.1 From nobody Fri May 3 04:30:09 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1686228231; cv=none; d=zohomail.com; s=zohoarc; b=B5njPeAEg4p+aF3gpMWbPE3k4zSa0Xxh+HjMVFYUVURetamORr9YZpTIcdN9PLL0PTdtkQIJ7VvbJZA0TJ/gvMZ8SR/KlbUxudPGMuQfaX2+bD/l8NVXsURngmbxgeTtgI8cpd6FE6WNtWXVquxHUAFreSlyMOkuWttESjum+fw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686228231; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=SvjOE1wSVteO9a7jCIZM0X0ZH3YH3HxN3uWZIwehWM8=; b=LQq0FOs9/y5Kkfia/QPPtWG5HHImtvKP2AZjYW4x47t4cGwBFmfxhwvLhQVE57LE+GbWOfdbI4FpM0FNOq7/d6eAk2NG/5wVO4gMw8RWdFZBnxF91vvcnBZn2Nn4X2hsNUWujJr+fHZWw45w0B9/tD6kKRXEQlVyCtkwFICRrAE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1686228231021172.82320022694773; Thu, 8 Jun 2023 05:43:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q7EyB-0002z3-Jx; Thu, 08 Jun 2023 08:42:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7Ey8-0002yC-2m for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:24 -0400 Received: from pv50p00im-zteg10011501.me.com ([17.58.6.42]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7Ey4-0000EK-5F for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:22 -0400 Received: from localhost.localdomain (pv50p00im-dlb-asmtp-mailmevip.me.com [17.56.9.10]) by pv50p00im-zteg10011501.me.com (Postfix) with ESMTPSA id 6DEAE4A02FD; Thu, 8 Jun 2023 12:42:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ynddal.dk; s=sig1; t=1686228138; bh=SvjOE1wSVteO9a7jCIZM0X0ZH3YH3HxN3uWZIwehWM8=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=iZphT6ie4ZWyPEqjC60xxm5DSP733sk127w/2y3VTZY/0ser28N+ow9XAfFmnuA3Z +dPbDcLTL9RKXG47obnX4SRMeoC7iMRkl37TeKXfIG1funR16QtHhoGksNkbP+AZJq oWWcQeMLXuyRyAjEDt6wTh4aS5krY+EzqaNb0t98r92bjAWSoXyWV0i9AE2CUEJnTf HMIEyUqRehCAqM5u2eIHKj1YgwvC1P1lPjlqm4mzmAbqVzM6VlOqlM32qfI9zSXK0J Nl27IVQax0QYtMEUje63orHXn7NihqUNjX53ajbYUmUSnDBdHzif79a1VwEDWlcny/ tawwyGeUhtwtQ== From: Mads Ynddal To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi , John Snow , Mads Ynddal , Cleber Rosa , Mads Ynddal Subject: [PATCH v3 09/14] simpletrace: refactor to separate responsibilities Date: Thu, 8 Jun 2023 14:41:42 +0200 Message-Id: <20230608124147.51125-10-mads@ynddal.dk> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230608124147.51125-1-mads@ynddal.dk> References: <20230608124147.51125-1-mads@ynddal.dk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: UmuzdBAQ-IAkh_clD7BQ-CZNAbBXu6ke X-Proofpoint-ORIG-GUID: UmuzdBAQ-IAkh_clD7BQ-CZNAbBXu6ke X-Proofpoint-Virus-Version: =?UTF-8?Q?vendor=3Dfsecure_engine=3D1.1.170-22c6f66c430a71ce266a39bfe25bc?= =?UTF-8?Q?2903e8d5c8f:6.0.517,18.0.572,17.0.605.474.0000000_definitions?= =?UTF-8?Q?=3D2022-06-21=5F01:2022-06-21=5F01,2020-02-14=5F11,2020-01-23?= =?UTF-8?Q?=5F02_signatures=3D0?= X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 mlxlogscore=999 adultscore=0 spamscore=0 phishscore=0 malwarescore=0 clxscore=1030 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2306080110 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=17.58.6.42; envelope-from=mads@ynddal.dk; helo=pv50p00im-zteg10011501.me.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @ynddal.dk) X-ZM-MESSAGEID: 1686228233209100009 Content-Type: text/plain; charset="utf-8" From: Mads Ynddal Moved event_mapping and event_id_to_name down one level in the function call-stack to keep variable instantiation and usage closer (`process` and `run` has no use of the variables; `read_trace_records` does). Instead of passing event_mapping and event_id_to_name to the bottom of the call-stack, we move their use to `read_trace_records`. This separates responsibility and ownership of the information. `read_record` now just reads the arguments from the file-object by knowning the total number of bytes. Parsing it to specific arguments is moved up to `read_trace_records`. Special handling of dropped events removed, as they can be handled by the general code. Signed-off-by: Mads Ynddal --- scripts/simpletrace.py | 115 +++++++++++++++++++---------------------- 1 file changed, 53 insertions(+), 62 deletions(-) diff --git a/scripts/simpletrace.py b/scripts/simpletrace.py index 7f514d1577..0826aef283 100755 --- a/scripts/simpletrace.py +++ b/scripts/simpletrace.py @@ -31,6 +31,7 @@ =20 log_header_fmt =3D '=3DQQQ' rec_header_fmt =3D '=3DQQII' +rec_header_fmt_len =3D struct.calcsize(rec_header_fmt) =20 class SimpleException(Exception): pass @@ -43,35 +44,6 @@ def read_header(fobj, hfmt): raise SimpleException('Error reading header. Wrong filetype provid= ed?') return struct.unpack(hfmt, hdr) =20 -def get_record(event_mapping, event_id_to_name, rechdr, fobj): - """Deserialize a trace record from a file into a tuple - (name, timestamp, pid, arg1, ..., arg6).""" - event_id, timestamp_ns, length, pid =3D rechdr - if event_id !=3D dropped_event_id: - name =3D event_id_to_name[event_id] - try: - event =3D event_mapping[name] - except KeyError as e: - raise SimpleException( - f'{e} event is logged but is not declared in the trace eve= nts' - 'file, try using trace-events-all instead.' - ) - - rec =3D (name, timestamp_ns, pid) - for type, name in event.args: - if is_string(type): - l =3D fobj.read(4) - (len,) =3D struct.unpack('=3DL', l) - s =3D fobj.read(len) - rec =3D rec + (s,) - else: - (value,) =3D struct.unpack('=3DQ', fobj.read(8)) - rec =3D rec + (value,) - else: - (dropped_count,) =3D struct.unpack('=3DQ', fobj.read(8)) - rec =3D ("dropped", timestamp_ns, pid, dropped_count) - return rec - def get_mapping(fobj): (event_id, ) =3D struct.unpack('=3DQ', fobj.read(8)) (len, ) =3D struct.unpack('=3DL', fobj.read(4)) @@ -79,10 +51,11 @@ def get_mapping(fobj): =20 return (event_id, name) =20 -def read_record(event_mapping, event_id_to_name, fobj): - """Deserialize a trace record from a file into a tuple (event_num, tim= estamp, pid, arg1, ..., arg6).""" - rechdr =3D read_header(fobj, rec_header_fmt) - return get_record(event_mapping, event_id_to_name, rechdr, fobj) +def read_record(fobj): + """Deserialize a trace record from a file into a tuple (event_num, tim= estamp, pid, args).""" + event_id, timestamp_ns, record_length, record_pid =3D read_header(fobj= , rec_header_fmt) + args_payload =3D fobj.read(record_length - rec_header_fmt_len) + return (event_id, timestamp_ns, record_pid, args_payload) =20 def read_trace_header(fobj): """Read and verify trace file header""" @@ -97,17 +70,28 @@ def read_trace_header(fobj): if log_version !=3D 4: raise ValueError(f'Log format {log_version} not supported with thi= s QEMU release!') =20 -def read_trace_records(event_mapping, event_id_to_name, fobj): - """Deserialize trace records from a file, yielding record tuples (even= t_num, timestamp, pid, arg1, ..., arg6). - - Note that `event_id_to_name` is modified if the file contains mapping = records. +def read_trace_records(events, fobj, read_header): + """Deserialize trace records from a file, yielding record tuples (even= t, event_num, timestamp, pid, arg1, ..., arg6). =20 Args: event_mapping (str -> Event): events dict, indexed by name - event_id_to_name (int -> str): event names dict, indexed by event = ID fobj (file): input file + read_header (bool): whether headers were read from fobj =20 """ + frameinfo =3D inspect.getframeinfo(inspect.currentframe()) + dropped_event =3D Event.build("Dropped_Event(uint64_t num_events_dropp= ed)", + frameinfo.lineno + 1, frameinfo.filename) + + event_mapping =3D {e.name: e for e in events} + event_mapping["dropped"] =3D dropped_event + event_id_to_name =3D {dropped_event_id: "dropped"} + + # If there is no header assume event ID mapping matches events list + if not read_header: + for event_id, event in enumerate(events): + event_id_to_name[event_id] =3D event.name + while True: t =3D fobj.read(8) if len(t) =3D=3D 0: @@ -115,12 +99,35 @@ def read_trace_records(event_mapping, event_id_to_name= , fobj): =20 (rectype, ) =3D struct.unpack('=3DQ', t) if rectype =3D=3D record_type_mapping: - event_id, name =3D get_mapping(fobj) - event_id_to_name[event_id] =3D name + event_id, event_name =3D get_mapping(fobj) + event_id_to_name[event_id] =3D event_name else: - rec =3D read_record(event_mapping, event_id_to_name, fobj) + event_id, timestamp_ns, pid, args_payload =3D read_record(fobj) + event_name =3D event_id_to_name[event_id] + + try: + event =3D event_mapping[event_name] + except KeyError as e: + raise SimpleException( + f'{e} event is logged but is not declared in the trace= events' + 'file, try using trace-events-all instead.' + ) + + offset =3D 0 + args =3D [] + for type, _ in event.args: + if is_string(type): + (length,) =3D struct.unpack_from('=3DL', args_payload,= offset=3Doffset) + offset +=3D 4 + s =3D args_payload[offset:offset+length] + offset +=3D length + args.append(s) + else: + (value,) =3D struct.unpack_from('=3DQ', args_payload, = offset=3Doffset) + offset +=3D 8 + args.append(value) =20 - yield rec + yield (event_mapping[event_name], event_name, timestamp_ns, pi= d) + tuple(args) =20 class Analyzer: """A trace file analyzer which processes trace records. @@ -202,20 +209,6 @@ def process(events, log, analyzer, read_header=3DTrue): if read_header: read_trace_header(log) =20 - frameinfo =3D inspect.getframeinfo(inspect.currentframe()) - dropped_event =3D Event.build("Dropped_Event(uint64_t num_events_dropp= ed)", - frameinfo.lineno + 1, frameinfo.filename) - event_mapping =3D {"dropped": dropped_event} - event_id_to_name =3D {dropped_event_id: "dropped"} - - for event in events_list: - event_mapping[event.name] =3D event - - # If there is no header assume event ID mapping matches events list - if not read_header: - for event_id, event in enumerate(events_list): - event_id_to_name[event_id] =3D event.name - def build_fn(analyzer, event): if isinstance(event, str): return analyzer.catchall @@ -238,12 +231,10 @@ def build_fn(analyzer, event): =20 with analyzer: fn_cache =3D {} - for rec in read_trace_records(event_mapping, event_id_to_name, log= ): - event_num =3D rec[0] - event =3D event_mapping[event_num] - if event_num not in fn_cache: - fn_cache[event_num] =3D build_fn(analyzer, event) - fn_cache[event_num](event, rec) + for event, event_id, timestamp_ns, record_pid, *rec_args in read_t= race_records(events, log, read_header): + if event_id not in fn_cache: + fn_cache[event_id] =3D build_fn(analyzer, event) + fn_cache[event_id](event, (event_id, timestamp_ns, record_pid,= *rec_args)) =20 if close_log: log.close() --=20 2.38.1 From nobody Fri May 3 04:30:09 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1686228215; cv=none; d=zohomail.com; s=zohoarc; b=HrKlgYpcwMdb2Qsf2rVH7BmShfkYAkHApuzhf1s1nUqFolurYEKoCskUDIjYAkj4CPwwcwW354YBt3yBfOELRjne477gu2I4dNRl6txsqXygd8zynFUGNoasep52d4CQcavl9r+8qNBArZY6qTYlzh2aKxwGG82zjqkWZMD4ohk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686228215; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=WJybbYg8Al1st0uItsQ36eA7qhiUWArDe/Aix+sMO1c=; b=ClaX5RVZoE1CGi+koG1yZG/gLfH10mgrYEo83Z2WnUYd+10a26dXVdgYvPmooac6rqbVJIaGkmZcUaRNn6Q1Fj+9XIPC9fk7KiZL4ljjIJKMssVbRVyK2++75MiEzMtGphcXQpexc8QOojRJQ7CuhTex/QX/U+S6OdAIgQ0Frs4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16862282152011020.575626263979; Thu, 8 Jun 2023 05:43:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q7EyB-0002zE-Lp; Thu, 08 Jun 2023 08:42:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7Ey9-0002yL-VP for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:25 -0400 Received: from pv50p00im-zteg10011501.me.com ([17.58.6.42]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7Ey6-0000Eg-NW for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:25 -0400 Received: from localhost.localdomain (pv50p00im-dlb-asmtp-mailmevip.me.com [17.56.9.10]) by pv50p00im-zteg10011501.me.com (Postfix) with ESMTPSA id 667B14A0397; Thu, 8 Jun 2023 12:42:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ynddal.dk; s=sig1; t=1686228141; bh=WJybbYg8Al1st0uItsQ36eA7qhiUWArDe/Aix+sMO1c=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=Urf/gmIigCIY4rWomqT1D2NtakhhzKQnTKBOglGj99iUBqZUWRYId7PYfb+uzfZ77 dNr3dtwgNJM7+AwHKIRdU7JhQ53r+ME5sfiio8JWB/CBlaqavN+Nzey6vs2BzsPhpN sEOoGJbIy8Dlu2h7lBDa0uWvCa0RMyknFcE0jQix7TfWy863G0ybzc6SDAtcE//bOn Xt9S1hWm/k22uiUYbaV4TGNO82QktGQlx6BUms8qg/kQeQGolH/WXjD6M0asx33XIb 8N6STPHj1lRRxdDZzYsmC0pBtOQbl/2gOgfVALXWtHFif8HzFPcuA29MzUuJsdOTXA cNm2twhlpkpiQ== From: Mads Ynddal To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi , John Snow , Mads Ynddal , Cleber Rosa , Mads Ynddal Subject: [PATCH v3 10/14] simpletrace: move logic of process into internal function Date: Thu, 8 Jun 2023 14:41:43 +0200 Message-Id: <20230608124147.51125-11-mads@ynddal.dk> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230608124147.51125-1-mads@ynddal.dk> References: <20230608124147.51125-1-mads@ynddal.dk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: YZAkaEgX6rWIedgWZTxcjLWta15SQpU9 X-Proofpoint-ORIG-GUID: YZAkaEgX6rWIedgWZTxcjLWta15SQpU9 X-Proofpoint-Virus-Version: =?UTF-8?Q?vendor=3Dfsecure_engine=3D1.1.170-22c6f66c430a71ce266a39bfe25bc?= =?UTF-8?Q?2903e8d5c8f:6.0.517,18.0.572,17.0.605.474.0000000_definitions?= =?UTF-8?Q?=3D2022-06-21=5F01:2022-06-21=5F01,2020-02-14=5F11,2020-01-23?= =?UTF-8?Q?=5F02_signatures=3D0?= X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 mlxlogscore=793 adultscore=0 spamscore=0 phishscore=0 malwarescore=0 clxscore=1030 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2306080110 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=17.58.6.42; envelope-from=mads@ynddal.dk; helo=pv50p00im-zteg10011501.me.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @ynddal.dk) X-ZM-MESSAGEID: 1686228216088100001 Content-Type: text/plain; charset="utf-8" From: Mads Ynddal To avoid duplicate code depending on input types and to better handle open/close of log with a context-manager, we move the logic of process into _process. Signed-off-by: Mads Ynddal --- scripts/simpletrace.py | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/scripts/simpletrace.py b/scripts/simpletrace.py index 0826aef283..6969fdd59a 100755 --- a/scripts/simpletrace.py +++ b/scripts/simpletrace.py @@ -201,13 +201,26 @@ def process(events, log, analyzer, read_header=3DTrue= ): # Treat as an already opened file-object events_list =3D read_events(events, events.name) =20 - close_log =3D False if isinstance(log, str): - log =3D open(log, 'rb') - close_log =3D True + with open(log, 'rb') as log_fobj: + _process(events_list, log_fobj, analyzer, read_header) + else: + # Treat `log` as an already opened file-object. We will not close = it, + # as we do not own it. + _process(events_list, log, analyzer, read_header) + +def _process(events, log_fobj, analyzer, read_header=3DTrue): + """Internal function for processing + + Args: + events (list): list of events already produced by tracetool.read_e= vents + log_fobj (file): file-object to read log data from + analyzer (Analyzer): the Analyzer to interpret the event data + read_header (bool, optional): Whether to read header data from the= log data. Defaults to True. + """ =20 if read_header: - read_trace_header(log) + read_trace_header(log_fobj) =20 def build_fn(analyzer, event): if isinstance(event, str): @@ -231,14 +244,11 @@ def build_fn(analyzer, event): =20 with analyzer: fn_cache =3D {} - for event, event_id, timestamp_ns, record_pid, *rec_args in read_t= race_records(events, log, read_header): + for event, event_id, timestamp_ns, record_pid, *rec_args in read_t= race_records(events, log_fobj, read_header): if event_id not in fn_cache: fn_cache[event_id] =3D build_fn(analyzer, event) fn_cache[event_id](event, (event_id, timestamp_ns, record_pid,= *rec_args)) =20 - if close_log: - log.close() - def run(analyzer): """Execute an analyzer on a trace file given on the command-line. =20 --=20 2.38.1 From nobody Fri May 3 04:30:09 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1686228185; cv=none; d=zohomail.com; s=zohoarc; b=B4vm+bUngqb/gheHmx+a4ERSyF9Iz9Vgu+ICcbu25lFgFDjuYbzf66rqoiobwN8j1dZlQ66LK4pdyFY8f7nunWpxkVfpiRi5KP/mauw25kqJGwMjIn7BmueHl3+2jS4F2Rf27LNlVE4RIBXDD783f/1m9ZRW8z4lIxPqVNNDMoQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686228185; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=IU4eVSgFHWDP+jifjfGdkBe+orZ14DeYHyLKEqxQd3o=; b=MyQD/epAdsaLW9sJkQRI36EZFWJoHh8FlJeGbrKL3VlWh0HPoMXQM9YZTZ7H4i1bzSVOmtcPF+nlR1xPFz0e7MbLSrVoGiWFXe+vFA9sAQX7bA343WG3ZkLpOfOHLcdJ71QWTPUwuR1NGNHbN7ke8tGxrYHcnz9ftZs9RNuJtA4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1686228185581830.8058076021697; Thu, 8 Jun 2023 05:43:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q7EyJ-00030A-Ed; Thu, 08 Jun 2023 08:42:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7EyD-0002zd-PR for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:30 -0400 Received: from pv50p00im-zteg10011501.me.com ([17.58.6.42]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7Ey9-0000FP-Nv for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:27 -0400 Received: from localhost.localdomain (pv50p00im-dlb-asmtp-mailmevip.me.com [17.56.9.10]) by pv50p00im-zteg10011501.me.com (Postfix) with ESMTPSA id F05594A0391; Thu, 8 Jun 2023 12:42:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ynddal.dk; s=sig1; t=1686228143; bh=IU4eVSgFHWDP+jifjfGdkBe+orZ14DeYHyLKEqxQd3o=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=fDUTgc29WkRH9Qr/GwfRT4XHiqYBQ6pablQICaFht8faX2ohv1dHQwBHWqq50fGHy kT7dJvUZwxw5xKPob1yjnz6HCxFXD2jseQ46JkmsGTQY9u+w1ADg9HyH6zvEbisKEY DTQ+m+aHN/x1p0/FUsLNL5g9Gd1D1V7sypzyb8ixIyQuOskQJsa9tGz5IZf+Nx3W3g Lv8zuU42NR6xFc+a5F1QIQjc77LwBEtt1S0ojWLw4sgYv3hJv0LdCZINGfC262baDG 2gN0a5D2jCEy3LZ7rgmOG2iOqDBy5lrJVQPgKTMKgVMwkcXZabTUVB5/eBdtGOOsdf bjx0CHjo8SsLg== From: Mads Ynddal To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi , John Snow , Mads Ynddal , Cleber Rosa , Mads Ynddal Subject: [PATCH v3 11/14] simpletrace: move event processing to Analyzer class Date: Thu, 8 Jun 2023 14:41:44 +0200 Message-Id: <20230608124147.51125-12-mads@ynddal.dk> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230608124147.51125-1-mads@ynddal.dk> References: <20230608124147.51125-1-mads@ynddal.dk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: dZX8MaBbliyKLsTn82E-nQzkxvsHuB83 X-Proofpoint-ORIG-GUID: dZX8MaBbliyKLsTn82E-nQzkxvsHuB83 X-Proofpoint-Virus-Version: =?UTF-8?Q?vendor=3Dfsecure_engine=3D1.1.170-22c6f66c430a71ce266a39bfe25bc?= =?UTF-8?Q?2903e8d5c8f:6.0.517,18.0.572,17.0.605.474.0000000_definitions?= =?UTF-8?Q?=3D2022-06-21=5F01:2022-06-21=5F01,2020-02-14=5F11,2020-01-23?= =?UTF-8?Q?=5F02_signatures=3D0?= X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 mlxlogscore=999 adultscore=0 spamscore=0 phishscore=0 malwarescore=0 clxscore=1030 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2306080110 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=17.58.6.42; envelope-from=mads@ynddal.dk; helo=pv50p00im-zteg10011501.me.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @ynddal.dk) X-ZM-MESSAGEID: 1686228186037100001 Content-Type: text/plain; charset="utf-8" From: Mads Ynddal Moved event processing to the Analyzer class to separate specific analyzer logic (like caching and function signatures) from the _process function. This allows for new types of Analyzer-based subclasses without changing the core code. Note, that the fn_cache is important for performance in cases where the analyzer is branching away from the catch-all a lot. The cache has no measurable performance penalty. Signed-off-by: Mads Ynddal --- scripts/simpletrace.py | 60 +++++++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 24 deletions(-) diff --git a/scripts/simpletrace.py b/scripts/simpletrace.py index 6969fdd59a..4136d00600 100755 --- a/scripts/simpletrace.py +++ b/scripts/simpletrace.py @@ -169,6 +169,35 @@ def catchall(self, event, rec): """Called if no specific method for processing a trace event has b= een found.""" pass =20 + def _build_fn(self, event): + fn =3D getattr(self, event.name, None) + if fn is None: + # Return early to avoid costly call to inspect.getfullargspec + return self.catchall + + event_argcount =3D len(event.args) + fn_argcount =3D len(inspect.getfullargspec(fn)[0]) - 1 + if fn_argcount =3D=3D event_argcount + 1: + # Include timestamp as first argument + return lambda _, rec: fn(*(rec[1:2] + rec[3:3 + event_argcount= ])) + elif fn_argcount =3D=3D event_argcount + 2: + # Include timestamp and pid + return lambda _, rec: fn(*rec[1:3 + event_argcount]) + else: + # Just arguments, no timestamp or pid + return lambda _, rec: fn(*rec[3:3 + event_argcount]) + + def _process_event(self, rec_args, *, event, event_id, timestamp_ns, p= id, **kwargs): + if not hasattr(self, '_fn_cache'): + # NOTE: Cannot depend on downstream subclasses to have + # super().__init__() because of legacy. + self._fn_cache =3D {} + + rec =3D (event_id, timestamp_ns, pid, *rec_args) + if event_id not in self._fn_cache: + self._fn_cache[event_id] =3D self._build_fn(event) + self._fn_cache[event_id](event, rec) + def end(self): """Called at the end of the trace.""" pass @@ -222,32 +251,15 @@ def _process(events, log_fobj, analyzer, read_header= =3DTrue): if read_header: read_trace_header(log_fobj) =20 - def build_fn(analyzer, event): - if isinstance(event, str): - return analyzer.catchall - - fn =3D getattr(analyzer, event.name, None) - if fn is None: - return analyzer.catchall - - event_argcount =3D len(event.args) - fn_argcount =3D len(inspect.getfullargspec(fn)[0]) - 1 - if fn_argcount =3D=3D event_argcount + 1: - # Include timestamp as first argument - return lambda _, rec: fn(*(rec[1:2] + rec[3:3 + event_argcount= ])) - elif fn_argcount =3D=3D event_argcount + 2: - # Include timestamp and pid - return lambda _, rec: fn(*rec[1:3 + event_argcount]) - else: - # Just arguments, no timestamp or pid - return lambda _, rec: fn(*rec[3:3 + event_argcount]) - with analyzer: - fn_cache =3D {} for event, event_id, timestamp_ns, record_pid, *rec_args in read_t= race_records(events, log_fobj, read_header): - if event_id not in fn_cache: - fn_cache[event_id] =3D build_fn(analyzer, event) - fn_cache[event_id](event, (event_id, timestamp_ns, record_pid,= *rec_args)) + analyzer._process_event( + rec_args, + event=3Devent, + event_id=3Devent_id, + timestamp_ns=3Dtimestamp_ns, + pid=3Drecord_pid, + ) =20 def run(analyzer): """Execute an analyzer on a trace file given on the command-line. --=20 2.38.1 From nobody Fri May 3 04:30:09 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1686228231; cv=none; d=zohomail.com; s=zohoarc; b=ZzHTtuQe8vCaILIO5Hw5cegle6HwaWrkXYqpbr4yjVX6vw9VwLITpVS6QZYptBvTaFGvlVRBpgMo3hsMUhVPxs4Tnqj5fkvftU7kulNwV1cIIFCBRCnTbvM+6lOZ7wbKXNXnMwvWuA/NcBd4TTSJGsU/UpKf1zGrjOmien+Ixeo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686228231; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=wpTpceLrJtf6IBDpt8rJaGu6r/WeIZFdIbhp4O7zWr0=; b=HM2fZiWY8EXRHu+vTNIkTrRHJBBxIR4oytiVvMcDkUguKP+djdZn/mGjWeJZAwh1vToO2WEe15kE2Bs78oAGB5zom8gtGkBdkP55jxbd3il8RC5D1SMKWvp3YDcLKGkNnqVMyvR3UsEOYFeCkYiS33d0TLHbMfAO2ndkD4frOtQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1686228231067863.8994007702736; Thu, 8 Jun 2023 05:43:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q7EyL-00030U-IY; Thu, 08 Jun 2023 08:42:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7EyF-0002zy-Ly for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:32 -0400 Received: from pv50p00im-zteg10011501.me.com ([17.58.6.42]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7EyD-0000GW-Aw for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:30 -0400 Received: from localhost.localdomain (pv50p00im-dlb-asmtp-mailmevip.me.com [17.56.9.10]) by pv50p00im-zteg10011501.me.com (Postfix) with ESMTPSA id 6AC484A026A; Thu, 8 Jun 2023 12:42:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ynddal.dk; s=sig1; t=1686228146; bh=wpTpceLrJtf6IBDpt8rJaGu6r/WeIZFdIbhp4O7zWr0=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=Vz9OT7yj8BeSt1hvPwZyjiR9wn7ISHFhDwpWBtAy7WqD+oUONjKI+3q8q3mPE7hJY +fpyTM4IU1sUyAA9mAI/nUUepVoV8G9OW85PACswkBWukJymCJk9Gc1lt8I5uYXEeM kkNQSr2BPYlotvdSWKGM8Jxr0u8DHCvRwrmEvyu4pcUJlBAi77lilQ/fmII+/iQkMq Ja4wCdTezFn5vVp3N48C8Nu2SN+qz3dhFh4RrSTE71MeB3lR7UlOy+xUSG8hc4NflU tfYbwX9iGl++UNBDMpmYc2HGhQVNZH+iqyvVc1iqOZ6a4jNXgJxagEYIgQyzS4QcZS dKX0+6QwixBZw== From: Mads Ynddal To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi , John Snow , Mads Ynddal , Cleber Rosa , Mads Ynddal Subject: [PATCH v3 12/14] simpletrace: added simplified Analyzer2 class Date: Thu, 8 Jun 2023 14:41:45 +0200 Message-Id: <20230608124147.51125-13-mads@ynddal.dk> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230608124147.51125-1-mads@ynddal.dk> References: <20230608124147.51125-1-mads@ynddal.dk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: aKzLeLHbexzM7lNJiJt8HzffvYndG5-o X-Proofpoint-ORIG-GUID: aKzLeLHbexzM7lNJiJt8HzffvYndG5-o X-Proofpoint-Virus-Version: =?UTF-8?Q?vendor=3Dfsecure_engine=3D1.1.170-22c6f66c430a71ce266a39bfe25bc?= =?UTF-8?Q?2903e8d5c8f:6.0.517,18.0.572,17.0.605.474.0000000_definitions?= =?UTF-8?Q?=3D2022-06-21=5F01:2022-06-21=5F01,2020-02-14=5F11,2020-01-23?= =?UTF-8?Q?=5F02_signatures=3D0?= X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 mlxlogscore=999 adultscore=0 spamscore=0 phishscore=0 malwarescore=0 clxscore=1030 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2306080110 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=17.58.6.42; envelope-from=mads@ynddal.dk; helo=pv50p00im-zteg10011501.me.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @ynddal.dk) X-ZM-MESSAGEID: 1686228232050100003 Content-Type: text/plain; charset="utf-8" From: Mads Ynddal By moving the dynamic argument construction to keyword-arguments, we can remove all of the specialized handling, and streamline it. If a tracing method wants to access these, they can define the kwargs, or ignore it be placing `**kwargs` at the end of the function's arguments list. Added deprecation warning to Analyzer class to make users aware of the Analyzer2 class. No removal date is planned. Signed-off-by: Mads Ynddal --- scripts/simpletrace.py | 72 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/scripts/simpletrace.py b/scripts/simpletrace.py index 4136d00600..ca982c9b54 100755 --- a/scripts/simpletrace.py +++ b/scripts/simpletrace.py @@ -12,6 +12,7 @@ import sys import struct import inspect +import warnings from tracetool import read_events, Event from tracetool.backend.simple import is_string =20 @@ -188,6 +189,11 @@ def _build_fn(self, event): return lambda _, rec: fn(*rec[3:3 + event_argcount]) =20 def _process_event(self, rec_args, *, event, event_id, timestamp_ns, p= id, **kwargs): + warnings.warn( + "Use of deprecated Analyzer class. Refer to Analyzer2 instead.= ", + DeprecationWarning, + ) + if not hasattr(self, '_fn_cache'): # NOTE: Cannot depend on downstream subclasses to have # super().__init__() because of legacy. @@ -211,6 +217,56 @@ def __exit__(self, exc_type, exc_val, exc_tb): self.end() return False =20 +class Analyzer2(Analyzer): + """A trace file analyzer which processes trace records. + + An analyzer can be passed to run() or process(). The begin() method is + invoked, then each trace record is processed, and finally the end() me= thod + is invoked. When Analyzer is used as a context-manager (using the `wit= h` + statement), begin() and end() are called automatically. + + If a method matching a trace event name exists, it is invoked to proce= ss + that trace record. Otherwise the catchall() method is invoked. + + The methods are called with a set of keyword-arguments. These can be i= gnored + using `**kwargs` or defined like any keyword-argument. + + The following keyword-arguments are available, but make sure to have an + **kwargs to allow for unmatched arguments in the future: + event: Event object of current trace + event_id: The id of the event in the current trace file + timestamp_ns: The timestamp in nanoseconds of the trace + pid: The process id recorded for the given trace + + Example: + The following method handles the runstate_set(int new_state) trace eve= nt:: + + def runstate_set(self, new_state, **kwargs): + ... + + The method can also explicitly take a timestamp keyword-argument with = the + trace event arguments:: + + def runstate_set(self, new_state, *, timestamp_ns, **kwargs): + ... + + Timestamps have the uint64_t type and are in nanoseconds. + + The pid can be included in addition to the timestamp and is useful when + dealing with traces from multiple processes: + + def runstate_set(self, new_state, *, timestamp_ns, pid, **kwargs): + ... + """ + + def catchall(self, *rec_args, event, timestamp_ns, pid, event_id, **kw= args): + """Called if no specific method for processing a trace event has b= een found.""" + pass + + def _process_event(self, rec_args, *, event, **kwargs): + fn =3D getattr(self, event.name, self.catchall) + fn(*rec_args, event=3Devent, **kwargs) + def process(events, log, analyzer, read_header=3DTrue): """Invoke an analyzer on each event in a log. Args: @@ -300,6 +356,22 @@ def catchall(self, event, rec): i +=3D 1 print(' '.join(fields)) =20 + class Formatter2(Analyzer2): + def __init__(self): + self.last_timestamp_ns =3D None + + def catchall(self, *rec_args, event, timestamp_ns, pid, event_id): + if self.last_timestamp_ns is None: + self.last_timestamp_ns =3D timestamp_ns + delta_ns =3D timestamp_ns - self.last_timestamp_ns + self.last_timestamp_ns =3D timestamp_ns + + fields =3D [ + f'{name}=3D{r}' if is_string(type) else f'{name}=3D0x{r:x}' + for r, (type, name) in zip(rec_args, event.args) + ] + print(f'{event.name} {delta_ns / 1000:0.3f} {pid=3D} ' + ' '.j= oin(fields)) + try: run(Formatter()) except SimpleException as e: --=20 2.38.1 From nobody Fri May 3 04:30:09 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1686228232; cv=none; d=zohomail.com; s=zohoarc; b=afTWmV/kjsI7+AvIBnwOAdzYT/+g9QF5uCR54KYUCmDMKBatXj/Y9wOqZjDRbpXdCeC7TpwRw6C6QtNGi629TaZdF8abZy5Nv83A8mevHOn/OHrtKotXASjLiN20DuepIxeCbHaTSqirK9S0Ko39GkYUrRN25SmTK1R7t6i3s2o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686228232; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=7qAcQKujX3iA3MQ+OMekIMYtdN+3noeO6v2+T7GlelE=; b=T7mfFDzygw9Peyghi6s0cQgBWdYfBmdEXoY2+4EEwCkk4v/1Mjbt7krJchos2jfV9bkfk/uq1lc+1y4B4LoBBtCWjLqufevFxfx9eCSW6InSrFiJ7II++Db+4cfmpc8LSAQPqFwN1ZoW2CGuWA8uEMJsM4lMPmvfzVaFSgaoppM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1686228232303229.93967698432186; Thu, 8 Jun 2023 05:43:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q7EyS-000397-Cx; Thu, 08 Jun 2023 08:42:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7EyQ-00038D-Cg for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:42 -0400 Received: from pv50p00im-zteg10011501.me.com ([17.58.6.42]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7EyO-0000HV-NQ for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:42 -0400 Received: from localhost.localdomain (pv50p00im-dlb-asmtp-mailmevip.me.com [17.56.9.10]) by pv50p00im-zteg10011501.me.com (Postfix) with ESMTPSA id 62A164A0306; Thu, 8 Jun 2023 12:42:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ynddal.dk; s=sig1; t=1686228149; bh=7qAcQKujX3iA3MQ+OMekIMYtdN+3noeO6v2+T7GlelE=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=bbmCR9cJFffonvm9+JBTBFeDqTxpj14smXQ0DcL4gqSDlZ9mdz3q9TCM1yA6Oxxrk vkIIj5gQ0MnhkO27zaLEnkIK19UAXKS+D081r4Og3LkuwXT4WdCImK8Ffhexyex1OJ hF7RVQlz+3znYDMWLhGirmL0Pe3qJjckcoKof/NPTvAh5i4Iyipmcvs1qO5j+bQnyE Lups/JbL5B2exGvz3Ov9hvg32Y0Y9vsU/T4lXlHdyQSLXhxEeXaV3L45PRamTimXVr ghrq/Ep4pNqFBLmVl6nOphDpSJI/WhYu8/py4RqkFtC2hc0Xmlj7bZRbrtseJSrMDp YQ6Bnun7wZ0DQ== From: Mads Ynddal To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi , John Snow , Mads Ynddal , Cleber Rosa , Mads Ynddal Subject: [PATCH v3 13/14] MAINTAINERS: add maintainer of simpletrace.py Date: Thu, 8 Jun 2023 14:41:46 +0200 Message-Id: <20230608124147.51125-14-mads@ynddal.dk> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230608124147.51125-1-mads@ynddal.dk> References: <20230608124147.51125-1-mads@ynddal.dk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: TfhaSnd5w15HHPg71ya7ea49Ksx8bT-6 X-Proofpoint-ORIG-GUID: TfhaSnd5w15HHPg71ya7ea49Ksx8bT-6 X-Proofpoint-Virus-Version: =?UTF-8?Q?vendor=3Dfsecure_engine=3D1.1.170-22c6f66c430a71ce266a39bfe25bc?= =?UTF-8?Q?2903e8d5c8f:6.0.517,18.0.572,17.0.605.474.0000000_definitions?= =?UTF-8?Q?=3D2022-06-21=5F01:2022-06-21=5F01,2020-02-14=5F11,2020-01-23?= =?UTF-8?Q?=5F02_signatures=3D0?= X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 mlxlogscore=889 adultscore=0 spamscore=0 phishscore=0 malwarescore=0 clxscore=1030 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2306080110 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=17.58.6.42; envelope-from=mads@ynddal.dk; helo=pv50p00im-zteg10011501.me.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @ynddal.dk) X-ZM-MESSAGEID: 1686228234233100013 Content-Type: text/plain; charset="utf-8" From: Mads Ynddal In my work to refactor simpletrace.py, I noticed that there's no maintainer of it, and has the status of "odd fixes". I'm using it from time to time, so I'd like to maintain the script. I've added myself as reviewer under "Tracing" to be informed of changes that might affect simpletrace.py. Signed-off-by: Mads Ynddal --- MAINTAINERS | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 436b3f0afe..dd09bbdab6 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3135,6 +3135,7 @@ F: stubs/ =20 Tracing M: Stefan Hajnoczi +R: Mads Ynddal S: Maintained F: trace/ F: trace-events @@ -3147,6 +3148,11 @@ F: docs/tools/qemu-trace-stap.rst F: docs/devel/tracing.rst T: git https://github.com/stefanha/qemu.git tracing =20 +Simpletrace +M: Mads Ynddal +S: Maintained +F: scripts/simpletrace.py + TPM M: Stefan Berger S: Maintained --=20 2.38.1 From nobody Fri May 3 04:30:09 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1686228243; cv=none; d=zohomail.com; s=zohoarc; b=NygGSOxHoSWJ6a4+ApUy7LLCOw13fNoK7O9zuNj2XNUAH6DPHmYnoWN9hjb/1Amj4Zz0dheUaUOOZlHzMAll863J85ikf4tZlK3MbyDqU2mgI4n8xdnUJwsWAUA9oPJcDjldIzhGYqvAaZiHYehKLujE3qQ3NR3fA0iotKcJRcA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686228243; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=0TM9Xz67OYngDEuTQ62kPsInUQpx3kaf2lzF824GJ1Y=; b=aWPfedWOYQHPNf9dkmyhNpWWdLrjjgSyEhWtnl45cgRT99/MXFKFU/5gOBmMTN0iBAWyJ7CXCg0J8+nTPbAXRO+yMeXRhTxx8vvbSs+gJhnCY2Ig859k7RTb0An4JQvA0VS0VK5uduKp1pOT8aOW0VCekoDYx/COAIUuD8qnm/E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1686228243766553.7768431011718; Thu, 8 Jun 2023 05:44:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q7EyU-00039l-0n; Thu, 08 Jun 2023 08:42:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7EyS-00039N-TI for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:44 -0400 Received: from pv50p00im-zteg10011501.me.com ([17.58.6.42]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7EyR-0000Hu-D5 for qemu-devel@nongnu.org; Thu, 08 Jun 2023 08:42:44 -0400 Received: from localhost.localdomain (pv50p00im-dlb-asmtp-mailmevip.me.com [17.56.9.10]) by pv50p00im-zteg10011501.me.com (Postfix) with ESMTPSA id D43C44A02A7; Thu, 8 Jun 2023 12:42:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ynddal.dk; s=sig1; t=1686228151; bh=0TM9Xz67OYngDEuTQ62kPsInUQpx3kaf2lzF824GJ1Y=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=jdDiXPAHeWEpoalnaKvHbaw9pcV7ldv17oaGEScegPsffjI0QkcOu0Lfobt5rVaek c1rGQd5SfucCWVcnPbfhQmROPfozVfb7u7aj6Wtxag8dXyilQlTdtmD6m63dAN0AEo bng5VlMB0WURVAJkJheDMQ4E2SQ/drR+amSnxcrJ9OIxHx0cbIsO7Yks2LQZgdE3/A VEWMJCI6ic8nNYlAJVvjo7qQFXHDaqmHYFXvqndPKicoRKdTrl753nZpIoJUWxcNNz hPl4GNdFyI0HYZ0kwohC+psmsnZaqaXi+1aZJZXQ+y6p75SVd/gRGO6tbrHjWkMx46 bmZ2LJU67Ly2g== From: Mads Ynddal To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi , John Snow , Mads Ynddal , Cleber Rosa , Mads Ynddal Subject: [PATCH v3 14/14] scripts/analyse-locks-simpletrace.py: changed iteritems() to items() Date: Thu, 8 Jun 2023 14:41:47 +0200 Message-Id: <20230608124147.51125-15-mads@ynddal.dk> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230608124147.51125-1-mads@ynddal.dk> References: <20230608124147.51125-1-mads@ynddal.dk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: rphsyfcdkeMrvi2AEm-N83sH4Ze5GpPa X-Proofpoint-ORIG-GUID: rphsyfcdkeMrvi2AEm-N83sH4Ze5GpPa X-Proofpoint-Virus-Version: =?UTF-8?Q?vendor=3Dfsecure_engine=3D1.1.170-22c6f66c430a71ce266a39bfe25bc?= =?UTF-8?Q?2903e8d5c8f:6.0.517,18.0.572,17.0.605.474.0000000_definitions?= =?UTF-8?Q?=3D2022-06-21=5F01:2022-06-21=5F01,2020-02-14=5F11,2020-01-23?= =?UTF-8?Q?=5F02_signatures=3D0?= X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 mlxlogscore=570 adultscore=0 spamscore=0 phishscore=0 malwarescore=0 clxscore=1030 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2306080110 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=17.58.6.42; envelope-from=mads@ynddal.dk; helo=pv50p00im-zteg10011501.me.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @ynddal.dk) X-ZM-MESSAGEID: 1686228244133100009 Content-Type: text/plain; charset="utf-8" From: Mads Ynddal Python 3 removed `dict.iteritems()` in favor of `dict.items()`. This means the script curerntly doesn't work on Python 3. Signed-off-by: Mads Ynddal --- scripts/analyse-locks-simpletrace.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/analyse-locks-simpletrace.py b/scripts/analyse-locks-s= impletrace.py index 63c11f4fce..d650dd7140 100755 --- a/scripts/analyse-locks-simpletrace.py +++ b/scripts/analyse-locks-simpletrace.py @@ -75,7 +75,7 @@ def get_args(): (analyser.locks, analyser.locked, analyser.unlocks)) =20 # Now dump the individual lock stats - for key, val in sorted(analyser.mutex_records.iteritems(), + for key, val in sorted(analyser.mutex_records.items(), key=3Dlambda k_v: k_v[1]["locks"]): print ("Lock: %#x locks: %d, locked: %d, unlocked: %d" % (key, val["locks"], val["locked"], val["unlocked"])) --=20 2.38.1