From nobody Fri May 17 02:41:17 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1611674377; cv=none; d=zohomail.com; s=zohoarc; b=bDadr+D/npb0pDOp/VwseVykQKuImVWFtA8byfvW6xA4xPge9bTA4uF3QzcSr0J8m2Wy1hy8xZd5tEs9mL4KxfsHK/y86t8M27soU0Zi8SbHuWR4WY6PXlagwrgX/p38jPul/hOozMahxksWbbZLRAOEY6/SA8Uabtzp+0EA32o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1611674377; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=xSBe1YG89EDVJSQ41vRQ8fF1J8XoHWCbPLZyg64zKpg=; b=ICiv9HriJP3hD2x3KXKeQ/GaDE9G1MQZdI4FeOs/MQVB+GcF79UwqBAF/x2guO/VOIL0CmG3GDxsUPzR+Gbd2JVuuTIupaPwozrKFbgatly/wqlpuzIs5VWIBtgfsdTfRyj6oKtqvcITUSBPcGdIC76sAzD5I2xgM1jwVvDrnXw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16116743774535.214596097537083; Tue, 26 Jan 2021 07:19:37 -0800 (PST) Received: from localhost ([::1]:60078 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l4Q80-0004d1-8e for importer@patchew.org; Tue, 26 Jan 2021 10:19:36 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:58962) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l4Q5R-0002Wy-Fj for qemu-devel@nongnu.org; Tue, 26 Jan 2021 10:16:57 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:34094) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1l4Q5P-0008Gi-5w for qemu-devel@nongnu.org; Tue, 26 Jan 2021 10:16:56 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-279-hCg3JED-NV6Y63Vuho2xJw-1; Tue, 26 Jan 2021 10:16:52 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 72C3A801817 for ; Tue, 26 Jan 2021 15:16:51 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-113-224.ams2.redhat.com [10.36.113.224]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1CCA75D719; Tue, 26 Jan 2021 15:16:51 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id A3322113865F; Tue, 26 Jan 2021 16:16:49 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1611674214; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xSBe1YG89EDVJSQ41vRQ8fF1J8XoHWCbPLZyg64zKpg=; b=OPpDttx+isdKHDsydacs8yjbxqkO6u0wt6eE1EqDwIQOfzu/nNoR8hdcBPSovosbGpg6Ra yaJ8cGNWvaXczHDNvT1Gf13zwFwxciJ9qDB8Gl6x2FhsscSQL4bfs8M5yPkAvBZPcs9GoK yF9PH1MXjrY8v2fzEqUWBwz0blF6frw= X-MC-Unique: hCg3JED-NV6Y63Vuho2xJw-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH] libqtest: Rework qtest_rsp() Date: Tue, 26 Jan 2021 16:16:49 +0100 Message-Id: <20210126151649.2220902-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.255, 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_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: lvivier@redhat.com, pbonzini@redhat.com, thuth@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" qtest_rsp() is used in two different ways: (1) return some arguments to caller, which the caller must free, and (2) return no arguments to caller. Passing non-zero @expected_args gets you (1), and passing zero gets you (2). Having "the return value must be freed" depend on an argument this way is less than ideal. Provide separate functions for the two ways: (1) qtest_rsp_args() takes @expected_args (possibly zero), and returns that number of arguments. Caller must free the return value always. (2) qtest_rsp() assumes zero, and returns nothing. Signed-off-by: Markus Armbruster Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Thomas Huth --- tests/qtest/libqtest.c | 50 ++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c index 5249a628cc..fd043b0570 100644 --- a/tests/qtest/libqtest.c +++ b/tests/qtest/libqtest.c @@ -503,7 +503,7 @@ static GString *qtest_client_socket_recv_line(QTestStat= e *s) return line; } =20 -static gchar **qtest_rsp(QTestState *s, int expected_args) +static gchar **qtest_rsp_args(QTestState *s, int expected_args) { GString *line; gchar **words; @@ -539,25 +539,27 @@ redo: g_assert(words[0] !=3D NULL); g_assert_cmpstr(words[0], =3D=3D, "OK"); =20 - if (expected_args) { - for (i =3D 0; i < expected_args; i++) { - g_assert(words[i] !=3D NULL); - } - } else { - g_strfreev(words); - words =3D NULL; + for (i =3D 0; i < expected_args; i++) { + g_assert(words[i] !=3D NULL); } =20 return words; } =20 +static void qtest_rsp(QTestState *s) +{ + gchar **words =3D qtest_rsp_args(s, 0); + + g_strfreev(words); +} + static int qtest_query_target_endianness(QTestState *s) { gchar **args; int big_endian; =20 qtest_sendf(s, "endianness\n"); - args =3D qtest_rsp(s, 1); + args =3D qtest_rsp_args(s, 1); g_assert(strcmp(args[1], "big") =3D=3D 0 || strcmp(args[1], "little") = =3D=3D 0); big_endian =3D strcmp(args[1], "big") =3D=3D 0; g_strfreev(args); @@ -892,14 +894,14 @@ bool qtest_get_irq(QTestState *s, int num) void qtest_module_load(QTestState *s, const char *prefix, const char *libn= ame) { qtest_sendf(s, "module_load %s %s\n", prefix, libname); - qtest_rsp(s, 0); + qtest_rsp(s); } =20 static int64_t qtest_clock_rsp(QTestState *s) { gchar **words; int64_t clock; - words =3D qtest_rsp(s, 2); + words =3D qtest_rsp_args(s, 2); clock =3D g_ascii_strtoll(words[1], NULL, 0); g_strfreev(words); return clock; @@ -926,13 +928,13 @@ int64_t qtest_clock_set(QTestState *s, int64_t val) void qtest_irq_intercept_out(QTestState *s, const char *qom_path) { qtest_sendf(s, "irq_intercept_out %s\n", qom_path); - qtest_rsp(s, 0); + qtest_rsp(s); } =20 void qtest_irq_intercept_in(QTestState *s, const char *qom_path) { qtest_sendf(s, "irq_intercept_in %s\n", qom_path); - qtest_rsp(s, 0); + qtest_rsp(s); } =20 void qtest_set_irq_in(QTestState *s, const char *qom_path, const char *nam= e, @@ -942,13 +944,13 @@ void qtest_set_irq_in(QTestState *s, const char *qom_= path, const char *name, name =3D "unnamed-gpio-in"; } qtest_sendf(s, "set_irq_in %s %s %d %d\n", qom_path, name, num, level); - qtest_rsp(s, 0); + qtest_rsp(s); } =20 static void qtest_out(QTestState *s, const char *cmd, uint16_t addr, uint3= 2_t value) { qtest_sendf(s, "%s 0x%x 0x%x\n", cmd, addr, value); - qtest_rsp(s, 0); + qtest_rsp(s); } =20 void qtest_outb(QTestState *s, uint16_t addr, uint8_t value) @@ -973,7 +975,7 @@ static uint32_t qtest_in(QTestState *s, const char *cmd= , uint16_t addr) unsigned long value; =20 qtest_sendf(s, "%s 0x%x\n", cmd, addr); - args =3D qtest_rsp(s, 2); + args =3D qtest_rsp_args(s, 2); ret =3D qemu_strtoul(args[1], NULL, 0, &value); g_assert(!ret && value <=3D UINT32_MAX); g_strfreev(args); @@ -1000,7 +1002,7 @@ static void qtest_write(QTestState *s, const char *cm= d, uint64_t addr, uint64_t value) { qtest_sendf(s, "%s 0x%" PRIx64 " 0x%" PRIx64 "\n", cmd, addr, value); - qtest_rsp(s, 0); + qtest_rsp(s); } =20 void qtest_writeb(QTestState *s, uint64_t addr, uint8_t value) @@ -1030,7 +1032,7 @@ static uint64_t qtest_read(QTestState *s, const char = *cmd, uint64_t addr) uint64_t value; =20 qtest_sendf(s, "%s 0x%" PRIx64 "\n", cmd, addr); - args =3D qtest_rsp(s, 2); + args =3D qtest_rsp_args(s, 2); ret =3D qemu_strtou64(args[1], NULL, 0, &value); g_assert(!ret); g_strfreev(args); @@ -1082,7 +1084,7 @@ void qtest_memread(QTestState *s, uint64_t addr, void= *data, size_t size) } =20 qtest_sendf(s, "read 0x%" PRIx64 " 0x%zx\n", addr, size); - args =3D qtest_rsp(s, 2); + args =3D qtest_rsp_args(s, 2); =20 for (i =3D 0; i < size; i++) { ptr[i] =3D hex2nib(args[1][2 + (i * 2)]) << 4; @@ -1098,7 +1100,7 @@ uint64_t qtest_rtas_call(QTestState *s, const char *n= ame, { qtest_sendf(s, "rtas %s %u 0x%"PRIx64" %u 0x%"PRIx64"\n", name, nargs, args, nret, ret); - qtest_rsp(s, 0); + qtest_rsp(s); return 0; } =20 @@ -1134,7 +1136,7 @@ void qtest_bufwrite(QTestState *s, uint64_t addr, con= st void *data, size_t size) qtest_sendf(s, "b64write 0x%" PRIx64 " 0x%zx ", addr, size); s->ops.send(s, bdata); s->ops.send(s, "\n"); - qtest_rsp(s, 0); + qtest_rsp(s); g_free(bdata); } =20 @@ -1144,7 +1146,7 @@ void qtest_bufread(QTestState *s, uint64_t addr, void= *data, size_t size) size_t len; =20 qtest_sendf(s, "b64read 0x%" PRIx64 " 0x%zx\n", addr, size); - args =3D qtest_rsp(s, 2); + args =3D qtest_rsp_args(s, 2); =20 g_base64_decode_inplace(args[1], &len); if (size !=3D len) { @@ -1174,14 +1176,14 @@ void qtest_memwrite(QTestState *s, uint64_t addr, c= onst void *data, size_t size) } =20 qtest_sendf(s, "write 0x%" PRIx64 " 0x%zx 0x%s\n", addr, size, enc); - qtest_rsp(s, 0); + qtest_rsp(s); g_free(enc); } =20 void qtest_memset(QTestState *s, uint64_t addr, uint8_t pattern, size_t si= ze) { qtest_sendf(s, "memset 0x%" PRIx64 " 0x%zx 0x%02x\n", addr, size, patt= ern); - qtest_rsp(s, 0); + qtest_rsp(s); } =20 void qtest_qmp_assert_success(QTestState *qts, const char *fmt, ...) --=20 2.26.2