From nobody Mon Feb 9 04:46:22 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1487068650106993.8584746052796; Tue, 14 Feb 2017 02:37:30 -0800 (PST) Received: from localhost ([::1]:33749 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cdaUB-0007Sz-Ai for importer@patchew.org; Tue, 14 Feb 2017 05:37:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38807) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cdaJP-0005qq-Va for qemu-devel@nongnu.org; Tue, 14 Feb 2017 05:26:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cdaJM-0003Mn-Mu for qemu-devel@nongnu.org; Tue, 14 Feb 2017 05:26:20 -0500 Received: from mx1.redhat.com ([209.132.183.28]:39916) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cdaJM-0003La-EK for qemu-devel@nongnu.org; Tue, 14 Feb 2017 05:26:16 -0500 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 981AAC0567B2 for ; Tue, 14 Feb 2017 10:26:16 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-50.ams2.redhat.com [10.36.116.50]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id v1EAQFop001978 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO) for ; Tue, 14 Feb 2017 05:26:16 -0500 Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id A568311384BA; Tue, 14 Feb 2017 11:26:11 +0100 (CET) From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 14 Feb 2017 11:26:01 +0100 Message-Id: <1487067971-10443-15-git-send-email-armbru@redhat.com> In-Reply-To: <1487067971-10443-1-git-send-email-armbru@redhat.com> References: <1487067971-10443-1-git-send-email-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Tue, 14 Feb 2017 10:26:16 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH 14/24] util/cutils: New qemu_strtosz_metric() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" To parse numbers with metric suffixes, we use qemu_strtosz_suffix_unit(nptr, &eptr, QEMU_STRTOSZ_DEFSUFFIX_B, 1000) Capture this in a new function for legibility: qemu_strtosz_metric(nptr, &eptr) Replace test_qemu_strtosz_suffix_unit() by test_qemu_strtosz_metric(). Rename qemu_strtosz_suffix_unit() to do_strtosz() and give it internal linkage. Signed-off-by: Markus Armbruster Reviewed-by: Eric Blake --- include/qemu/cutils.h | 4 ++-- target/i386/cpu.c | 3 +-- tests/test-cutils.c | 13 ++++++------- util/cutils.c | 11 ++++++++--- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/include/qemu/cutils.h b/include/qemu/cutils.h index f922223..81613d0 100644 --- a/include/qemu/cutils.h +++ b/include/qemu/cutils.h @@ -156,8 +156,8 @@ int parse_uint_full(const char *s, unsigned long long *= value, int base); int64_t qemu_strtosz(const char *nptr, char **end); int64_t qemu_strtosz_suffix(const char *nptr, char **end, const char default_suffix); -int64_t qemu_strtosz_suffix_unit(const char *nptr, char **end, - const char default_suffix, int64_t unit); +int64_t qemu_strtosz_metric(const char *nptr, char **end); + #define K_BYTE (1ULL << 10) #define M_BYTE (1ULL << 20) #define G_BYTE (1ULL << 30) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index eb49980..3a8d72d 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -2036,8 +2036,7 @@ static void x86_cpu_parse_featurestr(const char *type= name, char *features, int64_t tsc_freq; char *err; =20 - tsc_freq =3D qemu_strtosz_suffix_unit(val, &err, - QEMU_STRTOSZ_DEFSUFFIX_B, 1000); + tsc_freq =3D qemu_strtosz_metric(val, &err); if (tsc_freq < 0 || *err) { error_setg(errp, "bad numerical value %s", val); return; diff --git a/tests/test-cutils.c b/tests/test-cutils.c index af52ac5..383f812 100644 --- a/tests/test-cutils.c +++ b/tests/test-cutils.c @@ -1548,16 +1548,15 @@ static void test_qemu_strtosz_erange(void) g_assert(endptr =3D=3D str + 3); } =20 -static void test_qemu_strtosz_suffix_unit(void) +static void test_qemu_strtosz_metric(void) { - const char *str =3D "12345"; + const char *str =3D "12345k"; char *endptr =3D NULL; int64_t res; =20 - res =3D qemu_strtosz_suffix_unit(str, &endptr, - QEMU_STRTOSZ_DEFSUFFIX_KB, 1000); + res =3D qemu_strtosz_metric(str, &endptr); g_assert_cmpint(res, =3D=3D, 12345000); - g_assert(endptr =3D=3D str + 5); + g_assert(endptr =3D=3D str + 6); } =20 int main(int argc, char **argv) @@ -1754,8 +1753,8 @@ int main(int argc, char **argv) test_qemu_strtosz_trailing); g_test_add_func("/cutils/strtosz/erange", test_qemu_strtosz_erange); - g_test_add_func("/cutils/strtosz/suffix-unit", - test_qemu_strtosz_suffix_unit); + g_test_add_func("/cutils/strtosz/metric", + test_qemu_strtosz_metric); =20 return g_test_run(); } diff --git a/util/cutils.c b/util/cutils.c index 7442d46..8a506e7 100644 --- a/util/cutils.c +++ b/util/cutils.c @@ -205,8 +205,8 @@ static int64_t suffix_mul(char suffix, int64_t unit) * in *end, if not NULL. Return -ERANGE on overflow, Return -EINVAL on * other error. */ -int64_t qemu_strtosz_suffix_unit(const char *nptr, char **end, - const char default_suffix, int64_t unit) +static int64_t do_strtosz(const char *nptr, char **end, + const char default_suffix, int64_t unit) { int64_t retval =3D -EINVAL; char *endptr; @@ -251,7 +251,7 @@ fail: int64_t qemu_strtosz_suffix(const char *nptr, char **end, const char default_suffix) { - return qemu_strtosz_suffix_unit(nptr, end, default_suffix, 1024); + return do_strtosz(nptr, end, default_suffix, 1024); } =20 int64_t qemu_strtosz(const char *nptr, char **end) @@ -259,6 +259,11 @@ int64_t qemu_strtosz(const char *nptr, char **end) return qemu_strtosz_suffix(nptr, end, QEMU_STRTOSZ_DEFSUFFIX_MB); } =20 +int64_t qemu_strtosz_metric(const char *nptr, char **end) +{ + return do_strtosz(nptr, end, QEMU_STRTOSZ_DEFSUFFIX_B, 1000); +} + /** * Helper function for error checking after strtol() and the like */ --=20 2.7.4