From nobody Sat May 4 12:03:49 2024 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.zohomail.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 150356493643784.38798039727271; Thu, 24 Aug 2017 01:55:36 -0700 (PDT) Received: from localhost ([::1]:47311 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknvK-0002TB-TG for importer@patchew.org; Thu, 24 Aug 2017 04:55:34 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37150) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknmO-0003PO-J2 for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dknmL-0000NM-D4 for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:20 -0400 Received: from mx1.redhat.com ([209.132.183.28]:44268) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dknmL-0000ML-36 for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:17 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 274F1806AA; Thu, 24 Aug 2017 08:46:15 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-60.ams2.redhat.com [10.36.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1ED7118011; Thu, 24 Aug 2017 08:46:13 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 9AF9C113864E; Thu, 24 Aug 2017 10:46:11 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 274F1806AA Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=armbru@redhat.com From: Markus Armbruster To: qemu-devel@nongnu.org Date: Thu, 24 Aug 2017 10:45:56 +0200 Message-Id: <1503564371-26090-2-git-send-email-armbru@redhat.com> In-Reply-To: <1503564371-26090-1-git-send-email-armbru@redhat.com> References: <1503564371-26090-1-git-send-email-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Thu, 24 Aug 2017 08:46:15 +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 01/16] qapi: Update qapi-code-gen.txt examples to match current code X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, mdroth@linux.vnet.ibm.com 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" Signed-off-by: Markus Armbruster Reviewed-by: Marc-Andr=C3=A9 Lureau --- docs/devel/qapi-code-gen.txt | 47 +++++++++++++++++++++++++++++++++++-----= ---- 1 file changed, 38 insertions(+), 9 deletions(-) diff --git a/docs/devel/qapi-code-gen.txt b/docs/devel/qapi-code-gen.txt index 9903ac4..ae05327 100644 --- a/docs/devel/qapi-code-gen.txt +++ b/docs/devel/qapi-code-gen.txt @@ -957,6 +957,8 @@ Example: =20 typedef struct UserDefOneList UserDefOneList; =20 + typedef struct q_obj_my_command_arg q_obj_my_command_arg; + struct UserDefOne { int64_t integer; bool has_string; @@ -972,6 +974,10 @@ Example: =20 void qapi_free_UserDefOneList(UserDefOneList *obj); =20 + struct q_obj_my_command_arg { + UserDefOneList *arg1; + }; + #endif $ cat qapi-generated/example-qapi-types.c [Uninteresting stuff omitted...] @@ -1036,6 +1042,8 @@ Example: void visit_type_UserDefOne(Visitor *v, const char *name, UserDefOne **= obj, Error **errp); void visit_type_UserDefOneList(Visitor *v, const char *name, UserDefOn= eList **obj, Error **errp); =20 + void visit_type_q_obj_my_command_arg_members(Visitor *v, q_obj_my_comm= and_arg *obj, Error **errp); + #endif $ cat qapi-generated/example-qapi-visit.c [Uninteresting stuff omitted...] @@ -1104,6 +1112,9 @@ Example: } } =20 + if (!err) { + visit_check_list(v, &err); + } visit_end_list(v, (void **)obj); if (err && visit_is_input(v)) { qapi_free_UserDefOneList(*obj); @@ -1113,6 +1124,19 @@ Example: error_propagate(errp, err); } =20 + void visit_type_q_obj_my_command_arg_members(Visitor *v, q_obj_my_comm= and_arg *obj, Error **errp) + { + Error *err =3D NULL; + + visit_type_UserDefOneList(v, "arg1", &obj->arg1, &err); + if (err) { + goto out; + } + + out: + error_propagate(errp, err); + } + =3D=3D=3D scripts/qapi-commands.py =3D=3D=3D =20 Used to generate the marshaling/dispatch functions for the commands @@ -1145,9 +1169,12 @@ Example: =20 #include "example-qapi-types.h" #include "qapi/qmp/qdict.h" + #include "qapi/qmp/dispatch.h" #include "qapi/error.h" =20 + void example_qmp_init_marshal(QmpCommandList *cmds); UserDefOne *qmp_my_command(UserDefOneList *arg1, Error **errp); + void qmp_marshal_my_command(QDict *args, QObject **ret, Error **errp); =20 #endif $ cat qapi-generated/example-qmp-marshal.c @@ -1170,19 +1197,19 @@ Example: visit_free(v); } =20 - static void qmp_marshal_my_command(QDict *args, QObject **ret, Error *= *errp) + void qmp_marshal_my_command(QDict *args, QObject **ret, Error **errp) { Error *err =3D NULL; UserDefOne *retval; Visitor *v; - UserDefOneList *arg1 =3D NULL; + q_obj_my_command_arg arg =3D {0}; =20 v =3D qobject_input_visitor_new(QOBJECT(args)); visit_start_struct(v, NULL, NULL, 0, &err); if (err) { goto out; } - visit_type_UserDefOneList(v, "arg1", &arg1, &err); + visit_type_q_obj_my_command_arg_members(v, &arg, &err); if (!err) { visit_check_struct(v, &err); } @@ -1191,7 +1218,7 @@ Example: goto out; } =20 - retval =3D qmp_my_command(arg1, &err); + retval =3D qmp_my_command(arg.arg1, &err); if (err) { goto out; } @@ -1203,17 +1230,18 @@ Example: visit_free(v); v =3D qapi_dealloc_visitor_new(); visit_start_struct(v, NULL, NULL, 0, NULL); - visit_type_UserDefOneList(v, "arg1", &arg1, NULL); + visit_type_q_obj_my_command_arg_members(v, &arg, NULL); visit_end_struct(v, NULL); visit_free(v); } =20 - static void qmp_init_marshal(void) + void example_qmp_init_marshal(QmpCommandList *cmds) { - qmp_register_command("my-command", qmp_marshal_my_command, QCO_NO_= OPTIONS); - } + QTAILQ_INIT(cmds); =20 - qapi_init(qmp_init_marshal); + qmp_register_command(cmds, "my-command", + qmp_marshal_my_command, QCO_NO_OPTIONS); + } =20 =3D=3D=3D scripts/qapi-event.py =3D=3D=3D =20 @@ -1258,6 +1286,7 @@ Example: QDict *qmp; Error *err =3D NULL; QMPEventFuncEmit emit; + emit =3D qmp_event_get_func_emit(); if (!emit) { return; --=20 2.7.5 From nobody Sat May 4 12:03:49 2024 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.zohomail.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 1503564940988102.64393867257138; Thu, 24 Aug 2017 01:55:40 -0700 (PDT) Received: from localhost ([::1]:47312 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknvP-0002Wr-OR for importer@patchew.org; Thu, 24 Aug 2017 04:55:39 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37146) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknmO-0003PL-Ii for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dknmK-0000Me-Js for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:20 -0400 Received: from mx1.redhat.com ([209.132.183.28]:56346) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dknmK-0000Lx-BQ for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:16 -0400 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 mx1.redhat.com (Postfix) with ESMTPS id 4B8367EA90; Thu, 24 Aug 2017 08:46:15 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-60.ams2.redhat.com [10.36.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 23AE86A8FA; Thu, 24 Aug 2017 08:46:13 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 9F05B113864F; Thu, 24 Aug 2017 10:46:11 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 4B8367EA90 Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=armbru@redhat.com From: Markus Armbruster To: qemu-devel@nongnu.org Date: Thu, 24 Aug 2017 10:45:57 +0200 Message-Id: <1503564371-26090-3-git-send-email-armbru@redhat.com> In-Reply-To: <1503564371-26090-1-git-send-email-armbru@redhat.com> References: <1503564371-26090-1-git-send-email-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Thu, 24 Aug 2017 08:46:15 +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 02/16] qapi: Drop superfluous qapi_enum_parse() parameter max X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, mdroth@linux.vnet.ibm.com 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" The lookup tables have a sentinel, no need to make callers pass their size. Fun: the header has it in the wrong position. Good riddance. Signed-off-by: Markus Armbruster Reviewed-by: Eric Blake Reviewed-by: Marc-Andr=C3=A9 Lureau --- block.c | 1 - block/file-posix.c | 7 +++---- block/file-win32.c | 2 +- block/gluster.c | 6 ++---- block/parallels.c | 3 ++- block/qcow2.c | 6 ++---- blockdev.c | 1 - hmp.c | 2 +- include/qapi/util.h | 2 +- migration/global_state.c | 3 +-- qapi/qapi-util.c | 4 ++-- qemu-img.c | 3 +-- qemu-nbd.c | 1 - tests/test-qapi-util.c | 15 +++++---------- 14 files changed, 21 insertions(+), 35 deletions(-) diff --git a/block.c b/block.c index 3615a68..dd0efa2 100644 --- a/block.c +++ b/block.c @@ -1335,7 +1335,6 @@ static int bdrv_open_common(BlockDriverState *bs, Blo= ckBackend *file, BlockdevDetectZeroesOptions value =3D qapi_enum_parse(BlockdevDetectZeroesOptions_lookup, detect_zeroes, - BLOCKDEV_DETECT_ZEROES_OPTIONS__MAX, BLOCKDEV_DETECT_ZEROES_OPTIONS_OFF, &local_err); if (local_err) { diff --git a/block/file-posix.c b/block/file-posix.c index cb3bfce..97e8a92 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -439,7 +439,7 @@ static int raw_open_common(BlockDriverState *bs, QDict = *options, ? BLOCKDEV_AIO_OPTIONS_NATIVE : BLOCKDEV_AIO_OPTIONS_THREADS; aio =3D qapi_enum_parse(BlockdevAioOptions_lookup, qemu_opt_get(opts, = "aio"), - BLOCKDEV_AIO_OPTIONS__MAX, aio_default, &local_e= rr); + aio_default, &local_err); if (local_err) { error_propagate(errp, local_err); ret =3D -EINVAL; @@ -448,7 +448,7 @@ static int raw_open_common(BlockDriverState *bs, QDict = *options, s->use_linux_aio =3D (aio =3D=3D BLOCKDEV_AIO_OPTIONS_NATIVE); =20 locking =3D qapi_enum_parse(OnOffAuto_lookup, qemu_opt_get(opts, "lock= ing"), - ON_OFF_AUTO__MAX, ON_OFF_AUTO_AUTO, &local_e= rr); + ON_OFF_AUTO_AUTO, &local_err); if (local_err) { error_propagate(errp, local_err); ret =3D -EINVAL; @@ -1975,8 +1975,7 @@ static int raw_create(const char *filename, QemuOpts = *opts, Error **errp) nocow =3D qemu_opt_get_bool(opts, BLOCK_OPT_NOCOW, false); buf =3D qemu_opt_get_del(opts, BLOCK_OPT_PREALLOC); prealloc =3D qapi_enum_parse(PreallocMode_lookup, buf, - PREALLOC_MODE__MAX, PREALLOC_MODE_OFF, - &local_err); + PREALLOC_MODE_OFF, &local_err); g_free(buf); if (local_err) { error_propagate(errp, local_err); diff --git a/block/file-win32.c b/block/file-win32.c index 4706335..978d805 100644 --- a/block/file-win32.c +++ b/block/file-win32.c @@ -304,7 +304,7 @@ static bool get_aio_option(QemuOpts *opts, int flags, E= rror **errp) aio_default =3D (flags & BDRV_O_NATIVE_AIO) ? BLOCKDEV_AIO_OPTIONS_NAT= IVE : BLOCKDEV_AIO_OPTIONS_THREA= DS; aio =3D qapi_enum_parse(BlockdevAioOptions_lookup, qemu_opt_get(opts, = "aio"), - BLOCKDEV_AIO_OPTIONS__MAX, aio_default, errp); + aio_default, errp); =20 switch (aio) { case BLOCKDEV_AIO_OPTIONS_NATIVE: diff --git a/block/gluster.c b/block/gluster.c index 3064a45..8367e80 100644 --- a/block/gluster.c +++ b/block/gluster.c @@ -544,8 +544,7 @@ static int qemu_gluster_parse_json(BlockdevOptionsGlust= er *gconf, if (!strcmp(ptr, "tcp")) { ptr =3D "inet"; /* accept legacy "tcp" */ } - type =3D qapi_enum_parse(SocketAddressType_lookup, ptr, - SOCKET_ADDRESS_TYPE__MAX, -1, NULL); + type =3D qapi_enum_parse(SocketAddressType_lookup, ptr, -1, NULL); if (type !=3D SOCKET_ADDRESS_TYPE_INET && type !=3D SOCKET_ADDRESS_TYPE_UNIX) { error_setg(&local_err, @@ -1002,8 +1001,7 @@ static int qemu_gluster_create(const char *filename, BDRV_SECTOR_SIZE); =20 tmp =3D qemu_opt_get_del(opts, BLOCK_OPT_PREALLOC); - prealloc =3D qapi_enum_parse(PreallocMode_lookup, tmp, - PREALLOC_MODE__MAX, PREALLOC_MODE_OFF, + prealloc =3D qapi_enum_parse(PreallocMode_lookup, tmp, PREALLOC_MODE_O= FF, &local_err); g_free(tmp); if (local_err) { diff --git a/block/parallels.c b/block/parallels.c index e1e06d2..eb92366 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -697,7 +697,8 @@ static int parallels_open(BlockDriverState *bs, QDict *= options, int flags, s->prealloc_size =3D MAX(s->tracks, s->prealloc_size >> BDRV_SECTOR_BI= TS); buf =3D qemu_opt_get_del(opts, PARALLELS_OPT_PREALLOC_MODE); s->prealloc_mode =3D qapi_enum_parse(prealloc_mode_lookup, buf, - PRL_PREALLOC_MODE__MAX, PRL_PREALLOC_MODE_FALLOCATE, &local_er= r); + PRL_PREALLOC_MODE_FALLOCATE, + &local_err); g_free(buf); if (local_err !=3D NULL) { goto fail_options; diff --git a/block/qcow2.c b/block/qcow2.c index 40ba26c..7aaf248 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -2933,8 +2933,7 @@ static int qcow2_create(const char *filename, QemuOpt= s *opts, Error **errp) } buf =3D qemu_opt_get_del(opts, BLOCK_OPT_PREALLOC); prealloc =3D qapi_enum_parse(PreallocMode_lookup, buf, - PREALLOC_MODE__MAX, PREALLOC_MODE_OFF, - &local_err); + PREALLOC_MODE_OFF, &local_err); if (local_err) { error_propagate(errp, local_err); ret =3D -EINVAL; @@ -3624,8 +3623,7 @@ static BlockMeasureInfo *qcow2_measure(QemuOpts *opts= , BlockDriverState *in_bs, =20 optstr =3D qemu_opt_get_del(opts, BLOCK_OPT_PREALLOC); prealloc =3D qapi_enum_parse(PreallocMode_lookup, optstr, - PREALLOC_MODE__MAX, PREALLOC_MODE_OFF, - &local_err); + PREALLOC_MODE_OFF, &local_err); g_free(optstr); if (local_err) { goto err; diff --git a/blockdev.c b/blockdev.c index 02cd69b..722a61e 100644 --- a/blockdev.c +++ b/blockdev.c @@ -440,7 +440,6 @@ static void extract_common_blockdev_options(QemuOpts *o= pts, int *bdrv_flags, *detect_zeroes =3D qapi_enum_parse(BlockdevDetectZeroesOptions_lookup, qemu_opt_get(opts, "detect-zeroes"), - BLOCKDEV_DETECT_ZEROES_OPTIONS__MAX, BLOCKDEV_DETECT_ZEROES_OPTIONS_OFF, &local_error); if (local_error) { diff --git a/hmp.c b/hmp.c index fd80dce..03c1a78 100644 --- a/hmp.c +++ b/hmp.c @@ -1742,7 +1742,7 @@ void hmp_change(Monitor *mon, const QDict *qdict) if (read_only) { read_only_mode =3D qapi_enum_parse(BlockdevChangeReadOnlyMode_lookup, - read_only, BLOCKDEV_CHANGE_READ_ONLY_MODE_= _MAX, + read_only, BLOCKDEV_CHANGE_READ_ONLY_MODE_RETAIN, &er= r); if (err) { hmp_handle_error(mon, &err); diff --git a/include/qapi/util.h b/include/qapi/util.h index 7436ed8..4eb8a3f 100644 --- a/include/qapi/util.h +++ b/include/qapi/util.h @@ -12,7 +12,7 @@ #define QAPI_UTIL_H =20 int qapi_enum_parse(const char * const lookup[], const char *buf, - int max, int def, Error **errp); + int def, Error **errp); =20 int parse_qapi_name(const char *name, bool complete); =20 diff --git a/migration/global_state.c b/migration/global_state.c index dcbbcb2..88c55f8 100644 --- a/migration/global_state.c +++ b/migration/global_state.c @@ -89,8 +89,7 @@ static int global_state_post_load(void *opaque, int versi= on_id) s->received =3D true; trace_migrate_global_state_post_load(runstate); =20 - r =3D qapi_enum_parse(RunState_lookup, runstate, RUN_STATE__MAX, - -1, &local_err); + r =3D qapi_enum_parse(RunState_lookup, runstate, -1, &local_err); =20 if (r =3D=3D -1) { if (local_err) { diff --git a/qapi/qapi-util.c b/qapi/qapi-util.c index 46eda7d..ee7594f 100644 --- a/qapi/qapi-util.c +++ b/qapi/qapi-util.c @@ -16,7 +16,7 @@ #include "qapi/util.h" =20 int qapi_enum_parse(const char * const lookup[], const char *buf, - int max, int def, Error **errp) + int def, Error **errp) { int i; =20 @@ -24,7 +24,7 @@ int qapi_enum_parse(const char * const lookup[], const ch= ar *buf, return def; } =20 - for (i =3D 0; i < max; i++) { + for (i =3D 0; lookup[i]; i++) { if (!strcmp(buf, lookup[i])) { return i; } diff --git a/qemu-img.c b/qemu-img.c index 56ef49e..611ab7d 100644 --- a/qemu-img.c +++ b/qemu-img.c @@ -3491,8 +3491,7 @@ static int img_resize(int argc, char **argv) break; case OPTION_PREALLOCATION: prealloc =3D qapi_enum_parse(PreallocMode_lookup, optarg, - PREALLOC_MODE__MAX, PREALLOC_MODE__= MAX, - NULL); + PREALLOC_MODE__MAX, NULL); if (prealloc =3D=3D PREALLOC_MODE__MAX) { error_report("Invalid preallocation mode '%s'", optarg); return 1; diff --git a/qemu-nbd.c b/qemu-nbd.c index 27164b8..96e10d6 100644 --- a/qemu-nbd.c +++ b/qemu-nbd.c @@ -641,7 +641,6 @@ int main(int argc, char **argv) detect_zeroes =3D qapi_enum_parse(BlockdevDetectZeroesOptions_lookup, optarg, - BLOCKDEV_DETECT_ZEROES_OPTIONS__MAX, BLOCKDEV_DETECT_ZEROES_OPTIONS_OFF, &local_err); if (local_err) { diff --git a/tests/test-qapi-util.c b/tests/test-qapi-util.c index e869757..d72ee8c 100644 --- a/tests/test-qapi-util.c +++ b/tests/test-qapi-util.c @@ -20,25 +20,20 @@ static void test_qapi_enum_parse(void) Error *err =3D NULL; int ret; =20 - ret =3D qapi_enum_parse(QType_lookup, NULL, QTYPE__MAX, QTYPE_NONE, - &error_abort); + ret =3D qapi_enum_parse(QType_lookup, NULL, QTYPE_NONE, &error_abort); g_assert_cmpint(ret, =3D=3D, QTYPE_NONE); =20 - ret =3D qapi_enum_parse(QType_lookup, "junk", QTYPE__MAX, -1, - NULL); + ret =3D qapi_enum_parse(QType_lookup, "junk", -1, NULL); g_assert_cmpint(ret, =3D=3D, -1); =20 - ret =3D qapi_enum_parse(QType_lookup, "junk", QTYPE__MAX, -1, - &err); + ret =3D qapi_enum_parse(QType_lookup, "junk", -1, &err); error_free_or_abort(&err); =20 - ret =3D qapi_enum_parse(QType_lookup, "none", QTYPE__MAX, -1, - &error_abort); + ret =3D qapi_enum_parse(QType_lookup, "none", -1, &error_abort); g_assert_cmpint(ret, =3D=3D, QTYPE_NONE); =20 ret =3D qapi_enum_parse(QType_lookup, QType_lookup[QTYPE__MAX - 1], - QTYPE__MAX, QTYPE__MAX - 1, - &error_abort); + QTYPE__MAX - 1, &error_abort); g_assert_cmpint(ret, =3D=3D, QTYPE__MAX - 1); } =20 --=20 2.7.5 From nobody Sat May 4 12:03:49 2024 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.zohomail.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 1503564683466946.6401440989115; Thu, 24 Aug 2017 01:51:23 -0700 (PDT) Received: from localhost ([::1]:47294 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknrG-0007Zo-Ax for importer@patchew.org; Thu, 24 Aug 2017 04:51:22 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37238) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknmS-0003Qm-50 for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dknmL-0000NG-Cf for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:24 -0400 Received: from mx1.redhat.com ([209.132.183.28]:56354) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dknmL-0000MK-3Z for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:17 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 4B47B7EA8A; Thu, 24 Aug 2017 08:46:15 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-60.ams2.redhat.com [10.36.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2812A1797E; Thu, 24 Aug 2017 08:46:13 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id A2F691138656; Thu, 24 Aug 2017 10:46:11 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 4B47B7EA8A Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=armbru@redhat.com From: Markus Armbruster To: qemu-devel@nongnu.org Date: Thu, 24 Aug 2017 10:45:58 +0200 Message-Id: <1503564371-26090-4-git-send-email-armbru@redhat.com> In-Reply-To: <1503564371-26090-1-git-send-email-armbru@redhat.com> References: <1503564371-26090-1-git-send-email-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Thu, 24 Aug 2017 08:46:15 +0000 (UTC) Content-Transfer-Encoding: quoted-printable 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 03/16] tpm: Clean up driver registration & lookup X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, Stefan Berger , mdroth@linux.vnet.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Marc-Andr=C3=A9 Lureau We have a strict separation between enum TpmType and be_drivers[]: * TpmType may have any number of members. It just happens to have one. * tpm_register_driver() uses the first empty slot in be_drivers[]. If you register more than tpm_models[] has space, tpm_register_driver() fails. Its caller silently ignores the failure. If you register more than one with a given TpmType, tpm_display_backend_drivers() will shows all of them, but tpm_driver_find_by_type() and tpm_get_backend_driver() will find only the one one that registered first. Since we only ever register one driver, and be_drivers[] has space for just that one, this contraption even works. Turn be_drivers[] into a straight map from enum TpmType to driver. Much simpler, and has a decent chance to actually work should we ever acquire additional drivers. While there, use qapi_enum_parse() in tpm_get_backend_driver(). Signed-off-by: Marc-Andr=C3=A9 Lureau Message-Id: <20170822132255.23945-8-marcandre.lureau@redhat.com> Reviewed-by: Markus Armbruster [Rebased, superfluous initializer dropped, commit message rewritten] Cc: Stefan Berger Signed-off-by: Markus Armbruster --- include/sysemu/tpm_backend.h | 2 +- tpm.c | 45 +++++++++++++---------------------------= ---- 2 files changed, 14 insertions(+), 33 deletions(-) diff --git a/include/sysemu/tpm_backend.h b/include/sysemu/tpm_backend.h index b58f52d..1d21c6b 100644 --- a/include/sysemu/tpm_backend.h +++ b/include/sysemu/tpm_backend.h @@ -227,6 +227,6 @@ TPMBackend *qemu_find_tpm(const char *id); =20 const TPMDriverOps *tpm_get_backend_driver(const char *type); int tpm_register_model(enum TpmModel model); -int tpm_register_driver(const TPMDriverOps *tdo); +void tpm_register_driver(const TPMDriverOps *tdo); =20 #endif diff --git a/tpm.c b/tpm.c index 9a7c711..6f39ec9 100644 --- a/tpm.c +++ b/tpm.c @@ -14,6 +14,7 @@ #include "qemu/osdep.h" =20 #include "qapi/qmp/qerror.h" +#include "qapi/util.h" #include "sysemu/tpm_backend.h" #include "sysemu/tpm.h" #include "qemu/config-file.h" @@ -25,11 +26,8 @@ static QLIST_HEAD(, TPMBackend) tpm_backends =3D =20 =20 #define TPM_MAX_MODELS 1 -#define TPM_MAX_DRIVERS 1 =20 -static TPMDriverOps const *be_drivers[TPM_MAX_DRIVERS] =3D { - NULL, -}; +static TPMDriverOps const *be_drivers[TPM_TYPE__MAX]; =20 static enum TpmModel tpm_models[TPM_MAX_MODELS] =3D { TPM_MODEL__MAX, @@ -63,31 +61,18 @@ static bool tpm_model_is_registered(enum TpmModel model) =20 const TPMDriverOps *tpm_get_backend_driver(const char *type) { - int i; + int i =3D qapi_enum_parse(TpmType_lookup, type, -1, NULL); =20 - for (i =3D 0; i < TPM_MAX_DRIVERS && be_drivers[i] !=3D NULL; i++) { - if (!strcmp(TpmType_lookup[be_drivers[i]->type], type)) { - return be_drivers[i]; - } - } - - return NULL; + return i >=3D 0 ? be_drivers[i] : NULL; } =20 #ifdef CONFIG_TPM =20 -int tpm_register_driver(const TPMDriverOps *tdo) +void tpm_register_driver(const TPMDriverOps *tdo) { - int i; + assert(!be_drivers[tdo->type]); =20 - for (i =3D 0; i < TPM_MAX_DRIVERS; i++) { - if (!be_drivers[i]) { - be_drivers[i] =3D tdo; - return 0; - } - } - error_report("Could not register TPM driver"); - return 1; + be_drivers[tdo->type] =3D tdo; } =20 /* @@ -100,9 +85,12 @@ static void tpm_display_backend_drivers(void) =20 fprintf(stderr, "Supported TPM types (choose only one):\n"); =20 - for (i =3D 0; i < TPM_MAX_DRIVERS && be_drivers[i] !=3D NULL; i++) { + for (i =3D 0; i < TPM_TYPE__MAX; i++) { + if (be_drivers[i] =3D=3D NULL) { + continue; + } fprintf(stderr, "%12s %s\n", - TpmType_lookup[be_drivers[i]->type], be_drivers[i]->desc()= ); + TpmType_lookup[i], be_drivers[i]->desc()); } fprintf(stderr, "\n"); } @@ -239,14 +227,7 @@ int tpm_config_parse(QemuOptsList *opts_list, const ch= ar *optarg) =20 static const TPMDriverOps *tpm_driver_find_by_type(enum TpmType type) { - int i; - - for (i =3D 0; i < TPM_MAX_DRIVERS && be_drivers[i] !=3D NULL; i++) { - if (be_drivers[i]->type =3D=3D type) { - return be_drivers[i]; - } - } - return NULL; + return be_drivers[type]; } =20 static TPMInfo *qmp_query_tpm_inst(TPMBackend *drv) --=20 2.7.5 From nobody Sat May 4 12:03:49 2024 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.zohomail.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 150356467193235.86882632381048; Thu, 24 Aug 2017 01:51:11 -0700 (PDT) Received: from localhost ([::1]:47293 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknr4-0007BA-OK for importer@patchew.org; Thu, 24 Aug 2017 04:51:10 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37148) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknmO-0003PM-Iu for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dknmK-0000MV-IS for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:20 -0400 Received: from mx1.redhat.com ([209.132.183.28]:44256) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dknmK-0000Lv-8a for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:16 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 22CB5806A2; Thu, 24 Aug 2017 08:46:15 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-60.ams2.redhat.com [10.36.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2A42071C4E; Thu, 24 Aug 2017 08:46:13 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id A6B8B11386C7; Thu, 24 Aug 2017 10:46:11 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 22CB5806A2 Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=armbru@redhat.com From: Markus Armbruster To: qemu-devel@nongnu.org Date: Thu, 24 Aug 2017 10:45:59 +0200 Message-Id: <1503564371-26090-5-git-send-email-armbru@redhat.com> In-Reply-To: <1503564371-26090-1-git-send-email-armbru@redhat.com> References: <1503564371-26090-1-git-send-email-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Thu, 24 Aug 2017 08:46:15 +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 04/16] tpm: Clean up model registration & lookup X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, Stefan Berger , mdroth@linux.vnet.ibm.com 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" We have a strict separation between enum TpmModel and tpm_models[]: * TpmModel may have any number of members. It just happens to have one. * tpm_register_model() uses the first empty slot in tmp_models[]. If you register more than tpm_models[] has space, tpn_register_model() fails. Its caller silently ignores the failure. Register the same TpmModel more than once has no effect other than wasting tpm_models[] slots: tpm_model_is_registered() is happy with the first one it finds. Since we only ever register one model, and tpm_models[] has space for just that one, this contraption even works. Turn tpm_models[] into a straight map from enum TpmType to bool. Much simpler. Cc: Stefan Berger Signed-off-by: Markus Armbruster Reviewed-by: Marc-Andr=C3=A9 Lureau --- include/sysemu/tpm_backend.h | 2 +- tpm.c | 37 +++++-------------------------------- 2 files changed, 6 insertions(+), 33 deletions(-) diff --git a/include/sysemu/tpm_backend.h b/include/sysemu/tpm_backend.h index 1d21c6b..b0a9731 100644 --- a/include/sysemu/tpm_backend.h +++ b/include/sysemu/tpm_backend.h @@ -226,7 +226,7 @@ TPMVersion tpm_backend_get_tpm_version(TPMBackend *s); TPMBackend *qemu_find_tpm(const char *id); =20 const TPMDriverOps *tpm_get_backend_driver(const char *type); -int tpm_register_model(enum TpmModel model); +void tpm_register_model(enum TpmModel model); void tpm_register_driver(const TPMDriverOps *tdo); =20 #endif diff --git a/tpm.c b/tpm.c index 6f39ec9..7635fc7 100644 --- a/tpm.c +++ b/tpm.c @@ -24,39 +24,12 @@ static QLIST_HEAD(, TPMBackend) tpm_backends =3D QLIST_HEAD_INITIALIZER(tpm_backends); =20 - -#define TPM_MAX_MODELS 1 - static TPMDriverOps const *be_drivers[TPM_TYPE__MAX]; +static bool tpm_models[TPM_MODEL__MAX]; =20 -static enum TpmModel tpm_models[TPM_MAX_MODELS] =3D { - TPM_MODEL__MAX, -}; - -int tpm_register_model(enum TpmModel model) +void tpm_register_model(enum TpmModel model) { - int i; - - for (i =3D 0; i < TPM_MAX_MODELS; i++) { - if (tpm_models[i] =3D=3D TPM_MODEL__MAX) { - tpm_models[i] =3D model; - return 0; - } - } - error_report("Could not register TPM model"); - return 1; -} - -static bool tpm_model_is_registered(enum TpmModel model) -{ - int i; - - for (i =3D 0; i < TPM_MAX_MODELS; i++) { - if (tpm_models[i] =3D=3D model) { - return true; - } - } - return false; + tpm_models[model] =3D true; } =20 const TPMDriverOps *tpm_get_backend_driver(const char *type) @@ -270,7 +243,7 @@ TPMInfoList *qmp_query_tpm(Error **errp) TPMInfoList *info, *head =3D NULL, *cur_item =3D NULL; =20 QLIST_FOREACH(drv, &tpm_backends, list) { - if (!tpm_model_is_registered(drv->fe_model)) { + if (!tpm_models[drv->fe_model]) { continue; } info =3D g_new0(TPMInfoList, 1); @@ -317,7 +290,7 @@ TpmModelList *qmp_query_tpm_models(Error **errp) TpmModelList *head =3D NULL, *prev =3D NULL, *cur_item; =20 for (i =3D 0; i < TPM_MODEL__MAX; i++) { - if (!tpm_model_is_registered(i)) { + if (!tpm_models[i]) { continue; } cur_item =3D g_new0(TpmModelList, 1); --=20 2.7.5 From nobody Sat May 4 12:03:49 2024 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.zohomail.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 1503565061245670.7552492577493; Thu, 24 Aug 2017 01:57:41 -0700 (PDT) Received: from localhost ([::1]:47318 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknxM-0004Hm-2O for importer@patchew.org; Thu, 24 Aug 2017 04:57:40 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37164) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknmP-0003PU-6w for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dknmN-0000PC-LJ for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:21 -0400 Received: from mx1.redhat.com ([209.132.183.28]:54566) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dknmN-0000OZ-Ej for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:19 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 63B5883F40; Thu, 24 Aug 2017 08:46:18 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-60.ams2.redhat.com [10.36.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 701FF77D54; Thu, 24 Aug 2017 08:46:16 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id AAA0611386C8; Thu, 24 Aug 2017 10:46:11 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 63B5883F40 Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=armbru@redhat.com From: Markus Armbruster To: qemu-devel@nongnu.org Date: Thu, 24 Aug 2017 10:46:00 +0200 Message-Id: <1503564371-26090-6-git-send-email-armbru@redhat.com> In-Reply-To: <1503564371-26090-1-git-send-email-armbru@redhat.com> References: <1503564371-26090-1-git-send-email-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Thu, 24 Aug 2017 08:46:18 +0000 (UTC) Content-Transfer-Encoding: quoted-printable 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 05/16] hmp: Use qapi_enum_parse() in hmp_migrate_set_capability() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, mdroth@linux.vnet.ibm.com, "Dr. David Alan Gilbert" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Marc-Andr=C3=A9 Lureau The error message on invalid capability name changes from Invalid parameter "NAME" to invalid parameter value: NAME No worse than before. Signed-off-by: Marc-Andr=C3=A9 Lureau Message-Id: <20170822132255.23945-9-marcandre.lureau@redhat.com> Reviewed-by: Markus Armbruster [Rebased, commit message rewritten] Cc: "Dr. David Alan Gilbert" Signed-off-by: Markus Armbruster --- hmp.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/hmp.c b/hmp.c index 03c1a78..7e0bd3d 100644 --- a/hmp.c +++ b/hmp.c @@ -1527,23 +1527,20 @@ void hmp_migrate_set_capability(Monitor *mon, const= QDict *qdict) bool state =3D qdict_get_bool(qdict, "state"); Error *err =3D NULL; MigrationCapabilityStatusList *caps =3D g_malloc0(sizeof(*caps)); - int i; + int val; =20 - for (i =3D 0; i < MIGRATION_CAPABILITY__MAX; i++) { - if (strcmp(cap, MigrationCapability_lookup[i]) =3D=3D 0) { - caps->value =3D g_malloc0(sizeof(*caps->value)); - caps->value->capability =3D i; - caps->value->state =3D state; - caps->next =3D NULL; - qmp_migrate_set_capabilities(caps, &err); - break; - } + val =3D qapi_enum_parse(MigrationCapability_lookup, cap, -1, &err); + if (val < 0) { + goto end; } =20 - if (i =3D=3D MIGRATION_CAPABILITY__MAX) { - error_setg(&err, QERR_INVALID_PARAMETER, cap); - } + caps->value =3D g_malloc0(sizeof(*caps->value)); + caps->value->capability =3D val; + caps->value->state =3D state; + caps->next =3D NULL; + qmp_migrate_set_capabilities(caps, &err); =20 +end: qapi_free_MigrationCapabilityStatusList(caps); =20 if (err) { --=20 2.7.5 From nobody Sat May 4 12:03:49 2024 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.zohomail.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 1503565172981951.6452849351244; Thu, 24 Aug 2017 01:59:32 -0700 (PDT) Received: from localhost ([::1]:47324 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknz9-0006Ex-T0 for importer@patchew.org; Thu, 24 Aug 2017 04:59:31 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37142) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknmO-0003PK-IF for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dknmM-0000OB-5m for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:20 -0400 Received: from mx1.redhat.com ([209.132.183.28]:37662) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dknmL-0000Mx-Sd for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:18 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id CE7AC3680B; Thu, 24 Aug 2017 08:46:16 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-60.ams2.redhat.com [10.36.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6EA2918011; Thu, 24 Aug 2017 08:46:16 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id AF30411386C9; Thu, 24 Aug 2017 10:46:11 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com CE7AC3680B Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=armbru@redhat.com From: Markus Armbruster To: qemu-devel@nongnu.org Date: Thu, 24 Aug 2017 10:46:01 +0200 Message-Id: <1503564371-26090-7-git-send-email-armbru@redhat.com> In-Reply-To: <1503564371-26090-1-git-send-email-armbru@redhat.com> References: <1503564371-26090-1-git-send-email-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Thu, 24 Aug 2017 08:46:16 +0000 (UTC) Content-Transfer-Encoding: quoted-printable 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 06/16] hmp: Use qapi_enum_parse() in hmp_migrate_set_parameter() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, mdroth@linux.vnet.ibm.com, "Dr. David Alan Gilbert" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Marc-Andr=C3=A9 Lureau The error message on invalid parameter name changes from Invalid parameter "NAME" to invalid parameter value: NAME Slight degratation, perhaps. Signed-off-by: Marc-Andr=C3=A9 Lureau Message-Id: <20170822132255.23945-10-marcandre.lureau@redhat.com> Reviewed-by: Markus Armbruster [Rebased, assertion added, commit message rewritten] Cc: "Dr. David Alan Gilbert" Signed-off-by: Markus Armbruster --- hmp.c | 138 +++++++++++++++++++++++++++++++++-----------------------------= ---- 1 file changed, 68 insertions(+), 70 deletions(-) diff --git a/hmp.c b/hmp.c index 7e0bd3d..2b6e919 100644 --- a/hmp.c +++ b/hmp.c @@ -1556,84 +1556,82 @@ void hmp_migrate_set_parameter(Monitor *mon, const = QDict *qdict) MigrateSetParameters *p =3D g_new0(MigrateSetParameters, 1); uint64_t valuebw =3D 0; Error *err =3D NULL; - int i, ret; + int val, ret; =20 - for (i =3D 0; i < MIGRATION_PARAMETER__MAX; i++) { - if (strcmp(param, MigrationParameter_lookup[i]) =3D=3D 0) { - switch (i) { - case MIGRATION_PARAMETER_COMPRESS_LEVEL: - p->has_compress_level =3D true; - visit_type_int(v, param, &p->compress_level, &err); - break; - case MIGRATION_PARAMETER_COMPRESS_THREADS: - p->has_compress_threads =3D true; - visit_type_int(v, param, &p->compress_threads, &err); - break; - case MIGRATION_PARAMETER_DECOMPRESS_THREADS: - p->has_decompress_threads =3D true; - visit_type_int(v, param, &p->decompress_threads, &err); - break; - case MIGRATION_PARAMETER_CPU_THROTTLE_INITIAL: - p->has_cpu_throttle_initial =3D true; - visit_type_int(v, param, &p->cpu_throttle_initial, &err); - break; - case MIGRATION_PARAMETER_CPU_THROTTLE_INCREMENT: - p->has_cpu_throttle_increment =3D true; - visit_type_int(v, param, &p->cpu_throttle_increment, &err); - break; - case MIGRATION_PARAMETER_TLS_CREDS: - p->has_tls_creds =3D true; - p->tls_creds =3D g_new0(StrOrNull, 1); - p->tls_creds->type =3D QTYPE_QSTRING; - visit_type_str(v, param, &p->tls_creds->u.s, &err); - break; - case MIGRATION_PARAMETER_TLS_HOSTNAME: - p->has_tls_hostname =3D true; - p->tls_hostname =3D g_new0(StrOrNull, 1); - p->tls_hostname->type =3D QTYPE_QSTRING; - visit_type_str(v, param, &p->tls_hostname->u.s, &err); - break; - case MIGRATION_PARAMETER_MAX_BANDWIDTH: - p->has_max_bandwidth =3D true; - /* - * Can't use visit_type_size() here, because it - * defaults to Bytes rather than Mebibytes. - */ - ret =3D qemu_strtosz_MiB(valuestr, NULL, &valuebw); - if (ret < 0 || valuebw > INT64_MAX - || (size_t)valuebw !=3D valuebw) { - error_setg(&err, "Invalid size %s", valuestr); - break; - } - p->max_bandwidth =3D valuebw; - break; - case MIGRATION_PARAMETER_DOWNTIME_LIMIT: - p->has_downtime_limit =3D true; - visit_type_int(v, param, &p->downtime_limit, &err); - break; - case MIGRATION_PARAMETER_X_CHECKPOINT_DELAY: - p->has_x_checkpoint_delay =3D true; - visit_type_int(v, param, &p->x_checkpoint_delay, &err); - break; - case MIGRATION_PARAMETER_BLOCK_INCREMENTAL: - p->has_block_incremental =3D true; - visit_type_bool(v, param, &p->block_incremental, &err); - break; - } + val =3D qapi_enum_parse(MigrationParameter_lookup, param, -1, &err); + if (val < 0) { + goto cleanup; + } =20 - if (err) { - goto cleanup; - } - - qmp_migrate_set_parameters(p, &err); + switch (val) { + case MIGRATION_PARAMETER_COMPRESS_LEVEL: + p->has_compress_level =3D true; + visit_type_int(v, param, &p->compress_level, &err); + break; + case MIGRATION_PARAMETER_COMPRESS_THREADS: + p->has_compress_threads =3D true; + visit_type_int(v, param, &p->compress_threads, &err); + break; + case MIGRATION_PARAMETER_DECOMPRESS_THREADS: + p->has_decompress_threads =3D true; + visit_type_int(v, param, &p->decompress_threads, &err); + break; + case MIGRATION_PARAMETER_CPU_THROTTLE_INITIAL: + p->has_cpu_throttle_initial =3D true; + visit_type_int(v, param, &p->cpu_throttle_initial, &err); + break; + case MIGRATION_PARAMETER_CPU_THROTTLE_INCREMENT: + p->has_cpu_throttle_increment =3D true; + visit_type_int(v, param, &p->cpu_throttle_increment, &err); + break; + case MIGRATION_PARAMETER_TLS_CREDS: + p->has_tls_creds =3D true; + p->tls_creds =3D g_new0(StrOrNull, 1); + p->tls_creds->type =3D QTYPE_QSTRING; + visit_type_str(v, param, &p->tls_creds->u.s, &err); + break; + case MIGRATION_PARAMETER_TLS_HOSTNAME: + p->has_tls_hostname =3D true; + p->tls_hostname =3D g_new0(StrOrNull, 1); + p->tls_hostname->type =3D QTYPE_QSTRING; + visit_type_str(v, param, &p->tls_hostname->u.s, &err); + break; + case MIGRATION_PARAMETER_MAX_BANDWIDTH: + p->has_max_bandwidth =3D true; + /* + * Can't use visit_type_size() here, because it + * defaults to Bytes rather than Mebibytes. + */ + ret =3D qemu_strtosz_MiB(valuestr, NULL, &valuebw); + if (ret < 0 || valuebw > INT64_MAX + || (size_t)valuebw !=3D valuebw) { + error_setg(&err, "Invalid size %s", valuestr); break; } + p->max_bandwidth =3D valuebw; + break; + case MIGRATION_PARAMETER_DOWNTIME_LIMIT: + p->has_downtime_limit =3D true; + visit_type_int(v, param, &p->downtime_limit, &err); + break; + case MIGRATION_PARAMETER_X_CHECKPOINT_DELAY: + p->has_x_checkpoint_delay =3D true; + visit_type_int(v, param, &p->x_checkpoint_delay, &err); + break; + case MIGRATION_PARAMETER_BLOCK_INCREMENTAL: + p->has_block_incremental =3D true; + visit_type_bool(v, param, &p->block_incremental, &err); + break; + default: + assert(0); } =20 - if (i =3D=3D MIGRATION_PARAMETER__MAX) { - error_setg(&err, QERR_INVALID_PARAMETER, param); + if (err) { + goto cleanup; } =20 + qmp_migrate_set_parameters(p, &err); + cleanup: qapi_free_MigrateSetParameters(p); visit_free(v); --=20 2.7.5 From nobody Sat May 4 12:03:49 2024 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.zohomail.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 1503564670211981.3306858633607; Thu, 24 Aug 2017 01:51:10 -0700 (PDT) Received: from localhost ([::1]:47292 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknr3-00079L-1P for importer@patchew.org; Thu, 24 Aug 2017 04:51:09 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37234) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknmR-0003QU-Ny for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dknmQ-0000S5-Tb for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:23 -0400 Received: from mx1.redhat.com ([209.132.183.28]:56374) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dknmL-0000Mr-Oh; Thu, 24 Aug 2017 04:46:17 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id AB9BE85540; Thu, 24 Aug 2017 08:46:16 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-60.ams2.redhat.com [10.36.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 72FD71797E; Thu, 24 Aug 2017 08:46:16 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id B325A11386CA; Thu, 24 Aug 2017 10:46:11 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com AB9BE85540 Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=armbru@redhat.com From: Markus Armbruster To: qemu-devel@nongnu.org Date: Thu, 24 Aug 2017 10:46:02 +0200 Message-Id: <1503564371-26090-8-git-send-email-armbru@redhat.com> In-Reply-To: <1503564371-26090-1-git-send-email-armbru@redhat.com> References: <1503564371-26090-1-git-send-email-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Thu, 24 Aug 2017 08:46:16 +0000 (UTC) Content-Transfer-Encoding: quoted-printable 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 07/16] block: Use qemu_enum_parse() in blkdebug_debug_breakpoint() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , marcandre.lureau@redhat.com, mdroth@linux.vnet.ibm.com, qemu-block@nongnu.org, Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Marc-Andr=C3=A9 Lureau The error message on invalid blkdebug events changes from qemu-system-x86_64: LOCATION: Invalid event name "VALUE" to qemu-system-x86_64: LOCATION: invalid parameter value: VALUE Slight degradation, but the message is sub-par even before the patch. When complaining about a parameter value, both parameter name and value should be mentioned, as the value may well not be unique. Left for another day. Also left is the error message's unhelpful location: it points to the config=3DFILENAME rather than into that file. Signed-off-by: Marc-Andr=C3=A9 Lureau Message-Id: <20170822132255.23945-11-marcandre.lureau@redhat.com> Reviewed-by: Markus Armbruster [Rebased, commit message rewritten] Cc: Kevin Wolf Cc: Max Reitz Cc: qemu-block@nongnu.org Signed-off-by: Markus Armbruster --- block/blkdebug.c | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/block/blkdebug.c b/block/blkdebug.c index c19ab28..f1bbee9 100644 --- a/block/blkdebug.c +++ b/block/blkdebug.c @@ -32,6 +32,7 @@ #include "qapi/qmp/qbool.h" #include "qapi/qmp/qdict.h" #include "qapi/qmp/qstring.h" +#include "qapi/util.h" #include "sysemu/qtest.h" =20 typedef struct BDRVBlkdebugState { @@ -149,20 +150,6 @@ static QemuOptsList *config_groups[] =3D { NULL }; =20 -static int get_event_by_name(const char *name, BlkdebugEvent *event) -{ - int i; - - for (i =3D 0; i < BLKDBG__MAX; i++) { - if (!strcmp(BlkdebugEvent_lookup[i], name)) { - *event =3D i; - return 0; - } - } - - return -1; -} - struct add_rule_data { BDRVBlkdebugState *s; int action; @@ -173,7 +160,7 @@ static int add_rule(void *opaque, QemuOpts *opts, Error= **errp) struct add_rule_data *d =3D opaque; BDRVBlkdebugState *s =3D d->s; const char* event_name; - BlkdebugEvent event; + int event; struct BlkdebugRule *rule; int64_t sector; =20 @@ -182,8 +169,9 @@ static int add_rule(void *opaque, QemuOpts *opts, Error= **errp) if (!event_name) { error_setg(errp, "Missing event name for rule"); return -1; - } else if (get_event_by_name(event_name, &event) < 0) { - error_setg(errp, "Invalid event name \"%s\"", event_name); + } + event =3D qapi_enum_parse(BlkdebugEvent_lookup, event_name, -1, errp); + if (event < 0) { return -1; } =20 @@ -743,13 +731,13 @@ static int blkdebug_debug_breakpoint(BlockDriverState= *bs, const char *event, { BDRVBlkdebugState *s =3D bs->opaque; struct BlkdebugRule *rule; - BlkdebugEvent blkdebug_event; + int blkdebug_event; =20 - if (get_event_by_name(event, &blkdebug_event) < 0) { + blkdebug_event =3D qapi_enum_parse(BlkdebugEvent_lookup, event, -1, NU= LL); + if (blkdebug_event < 0) { return -ENOENT; } =20 - rule =3D g_malloc(sizeof(*rule)); *rule =3D (struct BlkdebugRule) { .event =3D blkdebug_event, --=20 2.7.5 From nobody Sat May 4 12:03:49 2024 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.zohomail.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 1503564516160526.8703483875986; Thu, 24 Aug 2017 01:48:36 -0700 (PDT) Received: from localhost ([::1]:47280 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknoY-0004iU-WE for importer@patchew.org; Thu, 24 Aug 2017 04:48:35 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37205) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknmQ-0003Pd-BD for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dknmO-0000QT-O9 for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:22 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53618) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dknmO-0000PY-Dp for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:20 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id EC5D04A6E1; Thu, 24 Aug 2017 08:46:18 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-60.ams2.redhat.com [10.36.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 72A507AF59; Thu, 24 Aug 2017 08:46:16 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id B6FEF11386CC; Thu, 24 Aug 2017 10:46:11 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com EC5D04A6E1 Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=armbru@redhat.com From: Markus Armbruster To: qemu-devel@nongnu.org Date: Thu, 24 Aug 2017 10:46:03 +0200 Message-Id: <1503564371-26090-9-git-send-email-armbru@redhat.com> In-Reply-To: <1503564371-26090-1-git-send-email-armbru@redhat.com> References: <1503564371-26090-1-git-send-email-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Thu, 24 Aug 2017 08:46:19 +0000 (UTC) Content-Transfer-Encoding: quoted-printable 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 08/16] quorum: Use qapi_enum_parse() in quorum_open() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, Alberto Garcia , mdroth@linux.vnet.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Marc-Andr=C3=A9 Lureau Signed-off-by: Marc-Andr=C3=A9 Lureau Message-Id: <20170822132255.23945-12-marcandre.lureau@redhat.com> Reviewed-by: Markus Armbruster [Rebased, qemu_opt_get() factored out, commit message tweaked] Cc: Alberto Garcia Reviewed-by: Alberto Garcia Signed-off-by: Markus Armbruster --- block/quorum.c | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/block/quorum.c b/block/quorum.c index d04da4f..cb66177 100644 --- a/block/quorum.c +++ b/block/quorum.c @@ -22,6 +22,7 @@ #include "qapi/qmp/qjson.h" #include "qapi/qmp/qlist.h" #include "qapi/qmp/qstring.h" +#include "qapi/util.h" #include "qapi-event.h" #include "crypto/hash.h" =20 @@ -867,30 +868,13 @@ static QemuOptsList quorum_runtime_opts =3D { }, }; =20 -static int parse_read_pattern(const char *opt) -{ - int i; - - if (!opt) { - /* Set quorum as default */ - return QUORUM_READ_PATTERN_QUORUM; - } - - for (i =3D 0; i < QUORUM_READ_PATTERN__MAX; i++) { - if (!strcmp(opt, QuorumReadPattern_lookup[i])) { - return i; - } - } - - return -EINVAL; -} - static int quorum_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { BDRVQuorumState *s =3D bs->opaque; Error *local_err =3D NULL; QemuOpts *opts =3D NULL; + const char *pattern_str; bool *opened; int i; int ret =3D 0; @@ -925,7 +909,13 @@ static int quorum_open(BlockDriverState *bs, QDict *op= tions, int flags, goto exit; } =20 - ret =3D parse_read_pattern(qemu_opt_get(opts, QUORUM_OPT_READ_PATTERN)= ); + pattern_str =3D qemu_opt_get(opts, QUORUM_OPT_READ_PATTERN); + if (!pattern_str) { + ret =3D QUORUM_READ_PATTERN_QUORUM; + } else { + ret =3D qapi_enum_parse(QuorumReadPattern_lookup, pattern_str, + -EINVAL, NULL); + } if (ret < 0) { error_setg(&local_err, "Please set read-pattern as fifo or quorum"= ); goto exit; --=20 2.7.5 From nobody Sat May 4 12:03:49 2024 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.zohomail.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 1503564823072167.26758902903646; Thu, 24 Aug 2017 01:53:43 -0700 (PDT) Received: from localhost ([::1]:47301 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dkntV-0000xh-VA for importer@patchew.org; Thu, 24 Aug 2017 04:53:41 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37147) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknmO-0003PN-J0 for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dknmM-0000OG-6u for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:20 -0400 Received: from mx1.redhat.com ([209.132.183.28]:56394) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dknmL-0000N1-T8 for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:18 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id CF5EE7EA83; Thu, 24 Aug 2017 08:46:16 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-60.ams2.redhat.com [10.36.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 96FA466D55; Thu, 24 Aug 2017 08:46:16 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id BAE3311386CD; Thu, 24 Aug 2017 10:46:11 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com CF5EE7EA83 Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=armbru@redhat.com From: Markus Armbruster To: qemu-devel@nongnu.org Date: Thu, 24 Aug 2017 10:46:04 +0200 Message-Id: <1503564371-26090-10-git-send-email-armbru@redhat.com> In-Reply-To: <1503564371-26090-1-git-send-email-armbru@redhat.com> References: <1503564371-26090-1-git-send-email-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Thu, 24 Aug 2017 08:46: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 09/16] crypto: Use qapi_enum_parse() in qcrypto_block_luks_name_lookup() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, mdroth@linux.vnet.ibm.com 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" Cc: "Daniel P. Berrange" Signed-off-by: Markus Armbruster Acked-by: Daniel P. Berrange Reviewed-by: Marc-Andr=C3=A9 Lureau --- crypto/block-luks.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/crypto/block-luks.c b/crypto/block-luks.c index afb8543..c3cacdb 100644 --- a/crypto/block-luks.c +++ b/crypto/block-luks.c @@ -20,6 +20,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" +#include "qapi/util.h" #include "qemu/bswap.h" =20 #include "crypto/block-luks.h" @@ -265,39 +266,33 @@ qcrypto_block_luks_cipher_alg_lookup(QCryptoCipherAlg= orithm alg, * make that function emit a more friendly error message */ static int qcrypto_block_luks_name_lookup(const char *name, const char *const *map, - size_t maplen, const char *type, Error **errp) { - size_t i; - for (i =3D 0; i < maplen; i++) { - if (g_str_equal(map[i], name)) { - return i; - } - } + int ret =3D qapi_enum_parse(map, name, -1, NULL); =20 - error_setg(errp, "%s %s not supported", type, name); - return 0; + if (ret < 0) { + error_setg(errp, "%s %s not supported", type, name); + return 0; + } + return ret; } =20 #define qcrypto_block_luks_cipher_mode_lookup(name, errp) \ qcrypto_block_luks_name_lookup(name, \ QCryptoCipherMode_lookup, \ - QCRYPTO_CIPHER_MODE__MAX, \ "Cipher mode", \ errp) =20 #define qcrypto_block_luks_hash_name_lookup(name, errp) \ qcrypto_block_luks_name_lookup(name, \ QCryptoHashAlgorithm_lookup, \ - QCRYPTO_HASH_ALG__MAX, \ "Hash algorithm", \ errp) =20 #define qcrypto_block_luks_ivgen_name_lookup(name, errp) \ qcrypto_block_luks_name_lookup(name, \ QCryptoIVGenAlgorithm_lookup, \ - QCRYPTO_IVGEN_ALG__MAX, \ "IV generator", \ errp) =20 --=20 2.7.5 From nobody Sat May 4 12:03:49 2024 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.zohomail.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 1503564502142418.6438052875484; Thu, 24 Aug 2017 01:48:22 -0700 (PDT) Received: from localhost ([::1]:47277 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknoK-0004YY-B5 for importer@patchew.org; Thu, 24 Aug 2017 04:48:20 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37139) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknmO-0003PJ-HS for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dknmM-0000Ns-2T for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:20 -0400 Received: from mx1.redhat.com ([209.132.183.28]:36184) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dknmL-0000N0-Sh for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:18 -0400 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 mx1.redhat.com (Postfix) with ESMTPS id CE24C5D698; Thu, 24 Aug 2017 08:46:16 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-60.ams2.redhat.com [10.36.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 98773669FB; Thu, 24 Aug 2017 08:46:16 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id BEB2411386CF; Thu, 24 Aug 2017 10:46:11 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com CE24C5D698 Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=armbru@redhat.com From: Markus Armbruster To: qemu-devel@nongnu.org Date: Thu, 24 Aug 2017 10:46:05 +0200 Message-Id: <1503564371-26090-11-git-send-email-armbru@redhat.com> In-Reply-To: <1503564371-26090-1-git-send-email-armbru@redhat.com> References: <1503564371-26090-1-git-send-email-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Thu, 24 Aug 2017 08:46: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 10/16] qapi: Use qapi_enum_parse() in input_type_enum() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, mdroth@linux.vnet.ibm.com 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" Signed-off-by: Markus Armbruster Reviewed-by: Marc-Andr=C3=A9 Lureau --- qapi/qapi-visit-core.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/qapi/qapi-visit-core.c b/qapi/qapi-visit-core.c index ed6d2af..ec83ff6 100644 --- a/qapi/qapi-visit-core.c +++ b/qapi/qapi-visit-core.c @@ -14,6 +14,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" +#include "qapi/util.h" #include "qemu-common.h" #include "qapi/qmp/qobject.h" #include "qapi/qmp/qerror.h" @@ -353,7 +354,7 @@ static void input_type_enum(Visitor *v, const char *nam= e, int *obj, const char *const strings[], Error **errp) { Error *local_err =3D NULL; - int64_t value =3D 0; + int64_t value; char *enum_str; =20 visit_type_str(v, name, &enum_str, &local_err); @@ -362,14 +363,8 @@ static void input_type_enum(Visitor *v, const char *na= me, int *obj, return; } =20 - while (strings[value] !=3D NULL) { - if (strcmp(strings[value], enum_str) =3D=3D 0) { - break; - } - value++; - } - - if (strings[value] =3D=3D NULL) { + value =3D qapi_enum_parse(strings, enum_str, -1, NULL); + if (value < 0) { error_setg(errp, QERR_INVALID_PARAMETER, enum_str); g_free(enum_str); return; --=20 2.7.5 From nobody Sat May 4 12:03:49 2024 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.zohomail.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 1503564670114840.9964957449115; Thu, 24 Aug 2017 01:51:10 -0700 (PDT) Received: from localhost ([::1]:47291 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknr2-00077u-4Y for importer@patchew.org; Thu, 24 Aug 2017 04:51:08 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37156) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknmO-0003PP-OM for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dknmM-0000O6-5i for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:20 -0400 Received: from mx1.redhat.com ([209.132.183.28]:56390) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dknmL-0000Mv-T1 for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:18 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id CC19385541; Thu, 24 Aug 2017 08:46:16 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-60.ams2.redhat.com [10.36.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 972801798D; Thu, 24 Aug 2017 08:46:16 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id C284A11386D0; Thu, 24 Aug 2017 10:46:11 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com CC19385541 Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=armbru@redhat.com From: Markus Armbruster To: qemu-devel@nongnu.org Date: Thu, 24 Aug 2017 10:46:06 +0200 Message-Id: <1503564371-26090-12-git-send-email-armbru@redhat.com> In-Reply-To: <1503564371-26090-1-git-send-email-armbru@redhat.com> References: <1503564371-26090-1-git-send-email-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Thu, 24 Aug 2017 08:46: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 11/16] qapi: Avoid unnecessary use of enum lookup table's sentinel X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, mdroth@linux.vnet.ibm.com 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" Currently, the FOO_lookup[] generated for QAPI enum types are terminated by a NULL sentinel. A future patch will generate enums with "holes". NULL-termination will cease to work then. To prepare for that, replace "have we reached the sentinel?" predicates by "have we reached the FOO__MAX value?" predicates. Signed-off-by: Markus Armbruster Reviewed-by: Marc-Andr=C3=A9 Lureau --- monitor.c | 4 ++-- tests/test-qobject-input-visitor.c | 2 +- tests/test-string-input-visitor.c | 2 +- ui/input-legacy.c | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/monitor.c b/monitor.c index e0f8801..b45f55d 100644 --- a/monitor.c +++ b/monitor.c @@ -3249,7 +3249,7 @@ void netdev_add_completion(ReadLineState *rs, int nb_= args, const char *str) } len =3D strlen(str); readline_set_completion_index(rs, len); - for (i =3D 0; NetClientDriver_lookup[i]; i++) { + for (i =3D 0; i < NET_CLIENT_DRIVER__MAX; i++) { add_completion_option(rs, str, NetClientDriver_lookup[i]); } } @@ -3537,7 +3537,7 @@ void watchdog_action_completion(ReadLineState *rs, in= t nb_args, const char *str) return; } readline_set_completion_index(rs, strlen(str)); - for (i =3D 0; WatchdogExpirationAction_lookup[i]; i++) { + for (i =3D 0; i < WATCHDOG_EXPIRATION_ACTION__MAX; i++) { add_completion_option(rs, str, WatchdogExpirationAction_lookup[i]); } } diff --git a/tests/test-qobject-input-visitor.c b/tests/test-qobject-input-= visitor.c index bcf0261..5bbfb65 100644 --- a/tests/test-qobject-input-visitor.c +++ b/tests/test-qobject-input-visitor.c @@ -382,7 +382,7 @@ static void test_visitor_in_enum(TestInputVisitorData *= data, Visitor *v; EnumOne i; =20 - for (i =3D 0; EnumOne_lookup[i]; i++) { + for (i =3D 0; i < ENUM_ONE__MAX; i++) { EnumOne res =3D -1; =20 v =3D visitor_input_test_init(data, "%s", EnumOne_lookup[i]); diff --git a/tests/test-string-input-visitor.c b/tests/test-string-input-vi= sitor.c index 79313a7..e7a7b80 100644 --- a/tests/test-string-input-visitor.c +++ b/tests/test-string-input-visitor.c @@ -279,7 +279,7 @@ static void test_visitor_in_enum(TestInputVisitorData *= data, Visitor *v; EnumOne i; =20 - for (i =3D 0; EnumOne_lookup[i]; i++) { + for (i =3D 0; i < ENUM_ONE__MAX; i++) { EnumOne res =3D -1; =20 v =3D visitor_input_test_init(data, EnumOne_lookup[i]); diff --git a/ui/input-legacy.c b/ui/input-legacy.c index 7159747..a5f1e82 100644 --- a/ui/input-legacy.c +++ b/ui/input-legacy.c @@ -61,7 +61,7 @@ int index_from_key(const char *key, size_t key_length) { int i; =20 - for (i =3D 0; QKeyCode_lookup[i] !=3D NULL; i++) { + for (i =3D 0; i < Q_KEY_CODE__MAX; i++) { if (!strncmp(key, QKeyCode_lookup[i], key_length) && !QKeyCode_lookup[i][key_length]) { break; --=20 2.7.5 From nobody Sat May 4 12:03:49 2024 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.zohomail.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 1503564507277973.5558948599778; Thu, 24 Aug 2017 01:48:27 -0700 (PDT) Received: from localhost ([::1]:47278 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknoO-0004aO-0w for importer@patchew.org; Thu, 24 Aug 2017 04:48:24 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37161) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknmP-0003PT-5M for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dknmM-0000ON-CD for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:21 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53538) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dknmM-0000NR-2q for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:18 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 0559A4E33B; Thu, 24 Aug 2017 08:46:17 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-60.ams2.redhat.com [10.36.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 9A7F166D56; Thu, 24 Aug 2017 08:46:16 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id C65F111386D1; Thu, 24 Aug 2017 10:46:11 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 0559A4E33B Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=armbru@redhat.com From: Markus Armbruster To: qemu-devel@nongnu.org Date: Thu, 24 Aug 2017 10:46:07 +0200 Message-Id: <1503564371-26090-13-git-send-email-armbru@redhat.com> In-Reply-To: <1503564371-26090-1-git-send-email-armbru@redhat.com> References: <1503564371-26090-1-git-send-email-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Thu, 24 Aug 2017 08:46:17 +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 12/16] qapi: Generate FOO_str() macro for QAPI enum FOO X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, mdroth@linux.vnet.ibm.com 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" The next commit will put it to use. May look pointless now, but we're going to change the FOO_lookup's type, and then it'll help. Signed-off-by: Markus Armbruster Reviewed-by: Marc-Andr=C3=A9 Lureau --- block.c | 1 - block/blkdebug.c | 1 - block/file-posix.c | 1 - block/file-win32.c | 1 - block/gluster.c | 1 - block/parallels.c | 1 - block/qcow2.c | 1 - block/quorum.c | 1 - blockdev.c | 1 - crypto/block-luks.c | 1 - docs/devel/qapi-code-gen.txt | 3 +++ hmp.c | 1 - include/qapi/util.h | 1 + migration/global_state.c | 1 - migration/migration.c | 1 - qapi/qapi-util.c | 8 +++++++- qapi/qapi-visit-core.c | 1 - qemu-img.c | 1 - qemu-nbd.c | 1 - scripts/qapi-event.py | 1 + scripts/qapi-types.py | 4 ++++ scripts/qapi.py | 3 +++ tests/test-qapi-util.c | 1 - tpm.c | 1 - util/keyval.c | 1 - 25 files changed, 19 insertions(+), 20 deletions(-) diff --git a/block.c b/block.c index dd0efa2..2d12131 100644 --- a/block.c +++ b/block.c @@ -42,7 +42,6 @@ #include "qapi-event.h" #include "qemu/cutils.h" #include "qemu/id.h" -#include "qapi/util.h" =20 #ifdef CONFIG_BSD #include diff --git a/block/blkdebug.c b/block/blkdebug.c index f1bbee9..b370fce 100644 --- a/block/blkdebug.c +++ b/block/blkdebug.c @@ -32,7 +32,6 @@ #include "qapi/qmp/qbool.h" #include "qapi/qmp/qdict.h" #include "qapi/qmp/qstring.h" -#include "qapi/util.h" #include "sysemu/qtest.h" =20 typedef struct BDRVBlkdebugState { diff --git a/block/file-posix.c b/block/file-posix.c index 97e8a92..d81eccc 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -31,7 +31,6 @@ #include "block/thread-pool.h" #include "qemu/iov.h" #include "block/raw-aio.h" -#include "qapi/util.h" #include "qapi/qmp/qstring.h" =20 #if defined(__APPLE__) && (__MACH__) diff --git a/block/file-win32.c b/block/file-win32.c index 978d805..192ea81 100644 --- a/block/file-win32.c +++ b/block/file-win32.c @@ -31,7 +31,6 @@ #include "block/thread-pool.h" #include "qemu/iov.h" #include "qapi/qmp/qstring.h" -#include "qapi/util.h" #include #include =20 diff --git a/block/gluster.c b/block/gluster.c index 8367e80..0614e0c 100644 --- a/block/gluster.c +++ b/block/gluster.c @@ -12,7 +12,6 @@ #include "block/block_int.h" #include "qapi/error.h" #include "qapi/qmp/qerror.h" -#include "qapi/util.h" #include "qemu/uri.h" #include "qemu/error-report.h" #include "qemu/cutils.h" diff --git a/block/parallels.c b/block/parallels.c index eb92366..d812210 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -35,7 +35,6 @@ #include "qemu/module.h" #include "qemu/bswap.h" #include "qemu/bitmap.h" -#include "qapi/util.h" =20 /**************************************************************/ =20 diff --git a/block/qcow2.c b/block/qcow2.c index 7aaf248..41e067e 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -30,7 +30,6 @@ #include "qemu/error-report.h" #include "qapi/qmp/qerror.h" #include "qapi/qmp/qbool.h" -#include "qapi/util.h" #include "qapi/qmp/types.h" #include "qapi-event.h" #include "trace.h" diff --git a/block/quorum.c b/block/quorum.c index cb66177..8d1c9f6 100644 --- a/block/quorum.c +++ b/block/quorum.c @@ -22,7 +22,6 @@ #include "qapi/qmp/qjson.h" #include "qapi/qmp/qlist.h" #include "qapi/qmp/qstring.h" -#include "qapi/util.h" #include "qapi-event.h" #include "crypto/hash.h" =20 diff --git a/blockdev.c b/blockdev.c index 722a61e..f90bc93 100644 --- a/blockdev.c +++ b/blockdev.c @@ -44,7 +44,6 @@ #include "qapi-visit.h" #include "qapi/qmp/qerror.h" #include "qapi/qobject-output-visitor.h" -#include "qapi/util.h" #include "sysemu/sysemu.h" #include "block/block_int.h" #include "qmp-commands.h" diff --git a/crypto/block-luks.c b/crypto/block-luks.c index c3cacdb..84d189a 100644 --- a/crypto/block-luks.c +++ b/crypto/block-luks.c @@ -20,7 +20,6 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "qapi/util.h" #include "qemu/bswap.h" =20 #include "crypto/block-luks.h" diff --git a/docs/devel/qapi-code-gen.txt b/docs/devel/qapi-code-gen.txt index ae05327..f04c63f 100644 --- a/docs/devel/qapi-code-gen.txt +++ b/docs/devel/qapi-code-gen.txt @@ -1275,6 +1275,9 @@ Example: EXAMPLE_QAPI_EVENT__MAX =3D 1, } example_QAPIEvent; =20 + #define example_QAPIEvent_str(val) \ + qapi_enum_lookup(example_QAPIEvent_lookup, (val)) + extern const char *const example_QAPIEvent_lookup[]; =20 #endif diff --git a/hmp.c b/hmp.c index 2b6e919..5d980ac 100644 --- a/hmp.c +++ b/hmp.c @@ -31,7 +31,6 @@ #include "qapi/qmp/qerror.h" #include "qapi/string-input-visitor.h" #include "qapi/string-output-visitor.h" -#include "qapi/util.h" #include "qapi-visit.h" #include "qom/object_interfaces.h" #include "ui/console.h" diff --git a/include/qapi/util.h b/include/qapi/util.h index 4eb8a3f..5e50d0c 100644 --- a/include/qapi/util.h +++ b/include/qapi/util.h @@ -11,6 +11,7 @@ #ifndef QAPI_UTIL_H #define QAPI_UTIL_H =20 +const char *qapi_enum_lookup(const char *const lookup[], int val); int qapi_enum_parse(const char * const lookup[], const char *buf, int def, Error **errp); =20 diff --git a/migration/global_state.c b/migration/global_state.c index 88c55f8..76cd3a1 100644 --- a/migration/global_state.c +++ b/migration/global_state.c @@ -14,7 +14,6 @@ #include "qemu/cutils.h" #include "qemu/error-report.h" #include "qapi/error.h" -#include "qapi/util.h" #include "migration.h" #include "migration/global_state.h" #include "migration/vmstate.h" diff --git a/migration/migration.c b/migration/migration.c index c3fe0ed..1a2b3eb 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -31,7 +31,6 @@ #include "migration/vmstate.h" #include "block/block.h" #include "qapi/qmp/qerror.h" -#include "qapi/util.h" #include "qemu/rcu.h" #include "block.h" #include "postcopy-ram.h" diff --git a/qapi/qapi-util.c b/qapi/qapi-util.c index ee7594f..7af2f04 100644 --- a/qapi/qapi-util.c +++ b/qapi/qapi-util.c @@ -13,7 +13,13 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu-common.h" -#include "qapi/util.h" + +const char *qapi_enum_lookup(const char *const lookup[], int val) +{ + assert(val >=3D 0); + + return lookup[val]; +} =20 int qapi_enum_parse(const char * const lookup[], const char *buf, int def, Error **errp) diff --git a/qapi/qapi-visit-core.c b/qapi/qapi-visit-core.c index ec83ff6..f285879 100644 --- a/qapi/qapi-visit-core.c +++ b/qapi/qapi-visit-core.c @@ -14,7 +14,6 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "qapi/util.h" #include "qemu-common.h" #include "qapi/qmp/qobject.h" #include "qapi/qmp/qerror.h" diff --git a/qemu-img.c b/qemu-img.c index 611ab7d..a72a2e3 100644 --- a/qemu-img.c +++ b/qemu-img.c @@ -26,7 +26,6 @@ =20 #include "qemu-version.h" #include "qapi/error.h" -#include "qapi/util.h" #include "qapi-visit.h" #include "qapi/qobject-output-visitor.h" #include "qapi/qmp/qerror.h" diff --git a/qemu-nbd.c b/qemu-nbd.c index 96e10d6..a97f3f4 100644 --- a/qemu-nbd.c +++ b/qemu-nbd.c @@ -34,7 +34,6 @@ #include "qemu/log.h" #include "qemu/systemd.h" #include "block/snapshot.h" -#include "qapi/util.h" #include "qapi/qmp/qstring.h" #include "qom/object_interfaces.h" #include "io/channel-socket.h" diff --git a/scripts/qapi-event.py b/scripts/qapi-event.py index bcbef10..07b4b70 100644 --- a/scripts/qapi-event.py +++ b/scripts/qapi-event.py @@ -217,6 +217,7 @@ fdef.write(mcgen(''' =20 fdecl.write(mcgen(''' #include "qapi/error.h" +#include "qapi/util.h" #include "qapi/qmp/qdict.h" #include "%(prefix)sqapi-types.h" =20 diff --git a/scripts/qapi-types.py b/scripts/qapi-types.py index b45e7b5..7e3051d 100644 --- a/scripts/qapi-types.py +++ b/scripts/qapi-types.py @@ -292,6 +292,10 @@ fdef.write(mcgen(''' ''', prefix=3Dprefix)) =20 +fdecl.write(mcgen(''' +#include "qapi/util.h" +''')) + schema =3D QAPISchema(input_file) gen =3D QAPISchemaGenTypeVisitor() schema.visit(gen) diff --git a/scripts/qapi.py b/scripts/qapi.py index 8aa2775..1cd713d 100644 --- a/scripts/qapi.py +++ b/scripts/qapi.py @@ -1894,6 +1894,9 @@ typedef enum %(c_name)s { =20 ret +=3D mcgen(''' =20 +#define %(c_name)s_str(val) \\ + qapi_enum_lookup(%(c_name)s_lookup, (val)) + extern const char *const %(c_name)s_lookup[]; ''', c_name=3Dc_name(name)) diff --git a/tests/test-qapi-util.c b/tests/test-qapi-util.c index d72ee8c..7e1be1d 100644 --- a/tests/test-qapi-util.c +++ b/tests/test-qapi-util.c @@ -12,7 +12,6 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "qapi/util.h" #include "test-qapi-types.h" =20 static void test_qapi_enum_parse(void) diff --git a/tpm.c b/tpm.c index 7635fc7..38f3eb8 100644 --- a/tpm.c +++ b/tpm.c @@ -14,7 +14,6 @@ #include "qemu/osdep.h" =20 #include "qapi/qmp/qerror.h" -#include "qapi/util.h" #include "sysemu/tpm_backend.h" #include "sysemu/tpm.h" #include "qemu/config-file.h" diff --git a/util/keyval.c b/util/keyval.c index 7dbda62..7dfc75c 100644 --- a/util/keyval.c +++ b/util/keyval.c @@ -82,7 +82,6 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qapi/qmp/qstring.h" -#include "qapi/util.h" #include "qemu/cutils.h" #include "qemu/option.h" =20 --=20 2.7.5 From nobody Sat May 4 12:03:49 2024 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.zohomail.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 1503565316331132.43692966951323; Thu, 24 Aug 2017 02:01:56 -0700 (PDT) Received: from localhost ([::1]:47340 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dko1S-00088y-Vk for importer@patchew.org; Thu, 24 Aug 2017 05:01:55 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37257) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknmT-0003SG-F2 for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dknmN-0000Pc-SL for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:25 -0400 Received: from mx1.redhat.com ([209.132.183.28]:36218) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dknmN-0000Oc-FF for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:19 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 6F1965D697; Thu, 24 Aug 2017 08:46:18 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-60.ams2.redhat.com [10.36.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8A8AA18011; Thu, 24 Aug 2017 08:46:17 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id CB20711386D2; Thu, 24 Aug 2017 10:46:11 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 6F1965D697 Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=armbru@redhat.com From: Markus Armbruster To: qemu-devel@nongnu.org Date: Thu, 24 Aug 2017 10:46:08 +0200 Message-Id: <1503564371-26090-14-git-send-email-armbru@redhat.com> In-Reply-To: <1503564371-26090-1-git-send-email-armbru@redhat.com> References: <1503564371-26090-1-git-send-email-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Thu, 24 Aug 2017 08:46:18 +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 13/16] qapi: Mechanically convert FOO_lookup[...] to FOO_str(...) X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, mdroth@linux.vnet.ibm.com 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" Signed-off-by: Markus Armbruster Reviewed-by: Marc-Andr=C3=A9 Lureau --- backends/hostmem.c | 2 +- block/backup.c | 2 +- block/file-posix.c | 4 +-- block/file-win32.c | 2 +- block/gluster.c | 4 +-- block/iscsi.c | 2 +- block/nfs.c | 2 +- block/qcow2.c | 4 +-- block/qed.c | 2 +- block/rbd.c | 2 +- block/sheepdog.c | 2 +- blockdev.c | 4 +-- blockjob.c | 6 ++--- chardev/char.c | 4 +-- crypto/block-luks.c | 12 ++++----- crypto/block.c | 4 +-- crypto/cipher-afalg.c | 2 +- crypto/cipher-builtin.c | 8 +++--- crypto/cipher-gcrypt.c | 4 +-- crypto/cipher-nettle.c | 8 +++--- crypto/hmac-gcrypt.c | 2 +- crypto/hmac-glib.c | 2 +- crypto/hmac-nettle.c | 2 +- crypto/pbkdf-gcrypt.c | 2 +- crypto/pbkdf-nettle.c | 2 +- hmp.c | 54 ++++++++++++++++++---------------= ---- hw/block/fdc.c | 6 ++--- hw/char/escc.c | 2 +- hw/input/virtio-input-hid.c | 4 +-- migration/colo-failover.c | 4 +-- migration/colo.c | 14 +++++----- migration/global_state.c | 2 +- monitor.c | 16 +++++------ net/net.c | 4 +-- qapi/qmp-dispatch.c | 2 +- tests/test-qapi-util.c | 2 +- tests/test-qobject-input-visitor.c | 4 +-- tests/test-qobject-output-visitor.c | 2 +- tests/test-string-input-visitor.c | 2 +- tests/test-string-output-visitor.c | 4 +-- tpm.c | 2 +- ui/input-legacy.c | 4 +-- ui/input.c | 12 ++++----- ui/vnc.c | 6 ++--- vl.c | 6 ++--- 45 files changed, 121 insertions(+), 121 deletions(-) diff --git a/backends/hostmem.c b/backends/hostmem.c index 4606b73..06e8898 100644 --- a/backends/hostmem.c +++ b/backends/hostmem.c @@ -304,7 +304,7 @@ host_memory_backend_memory_complete(UserCreatable *uc, = Error **errp) return; } else if (maxnode =3D=3D 0 && backend->policy !=3D MPOL_DEFAULT) { error_setg(errp, "host-nodes must be set for policy %s", - HostMemPolicy_lookup[backend->policy]); + HostMemPolicy_str(backend->policy)); return; } =20 diff --git a/block/backup.c b/block/backup.c index 504a089..517c300 100644 --- a/block/backup.c +++ b/block/backup.c @@ -596,7 +596,7 @@ BlockJob *backup_job_create(const char *job_id, BlockDr= iverState *bs, error_setg(errp, "a sync_bitmap was provided to backup_run, " "but received an incompatible sync_mode (%s)", - MirrorSyncMode_lookup[sync_mode]); + MirrorSyncMode_str(sync_mode)); return NULL; } =20 diff --git a/block/file-posix.c b/block/file-posix.c index d81eccc..bfef91d 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -1724,7 +1724,7 @@ static int raw_regular_truncate(int fd, int64_t offse= t, PreallocMode prealloc, default: result =3D -ENOTSUP; error_setg(errp, "Unsupported preallocation mode: %s", - PreallocMode_lookup[prealloc]); + PreallocMode_str(prealloc)); return result; } =20 @@ -1759,7 +1759,7 @@ static int raw_truncate(BlockDriverState *bs, int64_t= offset, =20 if (prealloc !=3D PREALLOC_MODE_OFF) { error_setg(errp, "Preallocation mode '%s' unsupported for this " - "non-regular file", PreallocMode_lookup[prealloc]); + "non-regular file", PreallocMode_str(prealloc)); return -ENOTSUP; } =20 diff --git a/block/file-win32.c b/block/file-win32.c index 192ea81..f2a1830 100644 --- a/block/file-win32.c +++ b/block/file-win32.c @@ -469,7 +469,7 @@ static int raw_truncate(BlockDriverState *bs, int64_t o= ffset, =20 if (prealloc !=3D PREALLOC_MODE_OFF) { error_setg(errp, "Unsupported preallocation mode '%s'", - PreallocMode_lookup[prealloc]); + PreallocMode_str(prealloc)); return -ENOTSUP; } =20 diff --git a/block/gluster.c b/block/gluster.c index 0614e0c..29f9427 100644 --- a/block/gluster.c +++ b/block/gluster.c @@ -1047,7 +1047,7 @@ static int qemu_gluster_create(const char *filename, default: ret =3D -EINVAL; error_setg(errp, "Unsupported preallocation mode: %s", - PreallocMode_lookup[prealloc]); + PreallocMode_str(prealloc)); break; } =20 @@ -1099,7 +1099,7 @@ static int qemu_gluster_truncate(BlockDriverState *bs= , int64_t offset, =20 if (prealloc !=3D PREALLOC_MODE_OFF) { error_setg(errp, "Unsupported preallocation mode '%s'", - PreallocMode_lookup[prealloc]); + PreallocMode_str(prealloc)); return -ENOTSUP; } =20 diff --git a/block/iscsi.c b/block/iscsi.c index d557c99..8b47d30 100644 --- a/block/iscsi.c +++ b/block/iscsi.c @@ -2087,7 +2087,7 @@ static int iscsi_truncate(BlockDriverState *bs, int64= _t offset, =20 if (prealloc !=3D PREALLOC_MODE_OFF) { error_setg(errp, "Unsupported preallocation mode '%s'", - PreallocMode_lookup[prealloc]); + PreallocMode_str(prealloc)); return -ENOTSUP; } =20 diff --git a/block/nfs.c b/block/nfs.c index bec16b7..337fcd9 100644 --- a/block/nfs.c +++ b/block/nfs.c @@ -772,7 +772,7 @@ static int nfs_file_truncate(BlockDriverState *bs, int6= 4_t offset, =20 if (prealloc !=3D PREALLOC_MODE_OFF) { error_setg(errp, "Unsupported preallocation mode '%s'", - PreallocMode_lookup[prealloc]); + PreallocMode_str(prealloc)); return -ENOTSUP; } =20 diff --git a/block/qcow2.c b/block/qcow2.c index 41e067e..eb7c154 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -2731,7 +2731,7 @@ static int qcow2_create2(const char *filename, int64_= t total_size, int64_t prealloc_size =3D qcow2_calc_prealloc_size(total_size, cluster_size, refcount_or= der); qemu_opt_set_number(opts, BLOCK_OPT_SIZE, prealloc_size, &error_ab= ort); - qemu_opt_set(opts, BLOCK_OPT_PREALLOC, PreallocMode_lookup[preallo= c], + qemu_opt_set(opts, BLOCK_OPT_PREALLOC, PreallocMode_str(prealloc), &error_abort); } =20 @@ -3096,7 +3096,7 @@ static int qcow2_truncate(BlockDriverState *bs, int64= _t offset, prealloc !=3D PREALLOC_MODE_FALLOC && prealloc !=3D PREALLOC_MODE_= FULL) { error_setg(errp, "Unsupported preallocation mode '%s'", - PreallocMode_lookup[prealloc]); + PreallocMode_str(prealloc)); return -ENOTSUP; } =20 diff --git a/block/qed.c b/block/qed.c index dc54bf4..28e2ec8 100644 --- a/block/qed.c +++ b/block/qed.c @@ -1399,7 +1399,7 @@ static int bdrv_qed_truncate(BlockDriverState *bs, in= t64_t offset, =20 if (prealloc !=3D PREALLOC_MODE_OFF) { error_setg(errp, "Unsupported preallocation mode '%s'", - PreallocMode_lookup[prealloc]); + PreallocMode_str(prealloc)); return -ENOTSUP; } =20 diff --git a/block/rbd.c b/block/rbd.c index 9c3aa63..144f350 100644 --- a/block/rbd.c +++ b/block/rbd.c @@ -944,7 +944,7 @@ static int qemu_rbd_truncate(BlockDriverState *bs, int6= 4_t offset, =20 if (prealloc !=3D PREALLOC_MODE_OFF) { error_setg(errp, "Unsupported preallocation mode '%s'", - PreallocMode_lookup[prealloc]); + PreallocMode_str(prealloc)); return -ENOTSUP; } =20 diff --git a/block/sheepdog.c b/block/sheepdog.c index abb2e79..1052098 100644 --- a/block/sheepdog.c +++ b/block/sheepdog.c @@ -2176,7 +2176,7 @@ static int sd_truncate(BlockDriverState *bs, int64_t = offset, =20 if (prealloc !=3D PREALLOC_MODE_OFF) { error_setg(errp, "Unsupported preallocation mode '%s'", - PreallocMode_lookup[prealloc]); + PreallocMode_str(prealloc)); return -ENOTSUP; } =20 diff --git a/blockdev.c b/blockdev.c index f90bc93..bfb2a95 100644 --- a/blockdev.c +++ b/blockdev.c @@ -1466,8 +1466,8 @@ static int action_check_completion_mode(BlkActionStat= e *s, Error **errp) error_setg(errp, "Action '%s' does not support Transaction property " "completion-mode =3D %s", - TransactionActionKind_lookup[s->action->type], - ActionCompletionMode_lookup[s->txn_props->completion_mo= de]); + TransactionActionKind_str(s->action->type), + ActionCompletionMode_str(s->txn_props->completion_mode)= ); return -1; } return 0; diff --git a/blockjob.c b/blockjob.c index 70a7818..3a0c491 100644 --- a/blockjob.c +++ b/blockjob.c @@ -208,7 +208,7 @@ static char *child_job_get_parent_desc(BdrvChild *c) { BlockJob *job =3D c->opaque; return g_strdup_printf("%s job '%s'", - BlockJobType_lookup[job->driver->job_type], + BlockJobType_str(job->driver->job_type), job->id); } =20 @@ -553,7 +553,7 @@ BlockJobInfo *block_job_query(BlockJob *job, Error **er= rp) return NULL; } info =3D g_new0(BlockJobInfo, 1); - info->type =3D g_strdup(BlockJobType_lookup[job->driver->job_type= ]); + info->type =3D g_strdup(BlockJobType_str(job->driver->job_type)); info->device =3D g_strdup(job->id); info->len =3D job->len; info->busy =3D job->busy; @@ -666,7 +666,7 @@ void *block_job_create(const char *job_id, const BlockJ= obDriver *driver, job->refcnt =3D 1; =20 error_setg(&job->blocker, "block device is in use by block job: %s", - BlockJobType_lookup[driver->job_type]); + BlockJobType_str(driver->job_type)); block_job_add_bdrv(job, "main node", bs, 0, BLK_PERM_ALL, &error_abort= ); bs->job =3D job; =20 diff --git a/chardev/char.c b/chardev/char.c index 5d283b9..b6fd5eb 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -931,7 +931,7 @@ ChardevReturn *qmp_chardev_add(const char *id, ChardevB= ackend *backend, ChardevReturn *ret; Chardev *chr; =20 - cc =3D char_get_class(ChardevBackendKind_lookup[backend->type], errp); + cc =3D char_get_class(ChardevBackendKind_str(backend->type), errp); if (!cc) { return NULL; } @@ -989,7 +989,7 @@ ChardevReturn *qmp_chardev_change(const char *id, Chard= evBackend *backend, return NULL; } =20 - cc =3D char_get_class(ChardevBackendKind_lookup[backend->type], errp); + cc =3D char_get_class(ChardevBackendKind_str(backend->type), errp); if (!cc) { return NULL; } diff --git a/crypto/block-luks.c b/crypto/block-luks.c index 84d189a..4e82895 100644 --- a/crypto/block-luks.c +++ b/crypto/block-luks.c @@ -257,7 +257,7 @@ qcrypto_block_luks_cipher_alg_lookup(QCryptoCipherAlgor= ithm alg, } =20 error_setg(errp, "Algorithm '%s' not supported", - QCryptoCipherAlgorithm_lookup[alg]); + QCryptoCipherAlgorithm_str(alg)); return NULL; } =20 @@ -392,7 +392,7 @@ qcrypto_block_luks_essiv_cipher(QCryptoCipherAlgorithm = cipher, break; default: error_setg(errp, "Cipher %s not supported with essiv", - QCryptoCipherAlgorithm_lookup[cipher]); + QCryptoCipherAlgorithm_str(cipher)); return 0; } } @@ -962,16 +962,16 @@ qcrypto_block_luks_create(QCryptoBlock *block, goto error; } =20 - cipher_mode =3D QCryptoCipherMode_lookup[luks_opts.cipher_mode]; - ivgen_alg =3D QCryptoIVGenAlgorithm_lookup[luks_opts.ivgen_alg]; + cipher_mode =3D QCryptoCipherMode_str(luks_opts.cipher_mode); + ivgen_alg =3D QCryptoIVGenAlgorithm_str(luks_opts.ivgen_alg); if (luks_opts.has_ivgen_hash_alg) { - ivgen_hash_alg =3D QCryptoHashAlgorithm_lookup[luks_opts.ivgen_has= h_alg]; + ivgen_hash_alg =3D QCryptoHashAlgorithm_str(luks_opts.ivgen_hash_a= lg); cipher_mode_spec =3D g_strdup_printf("%s-%s:%s", cipher_mode, ivge= n_alg, ivgen_hash_alg); } else { cipher_mode_spec =3D g_strdup_printf("%s-%s", cipher_mode, ivgen_a= lg); } - hash_alg =3D QCryptoHashAlgorithm_lookup[luks_opts.hash_alg]; + hash_alg =3D QCryptoHashAlgorithm_str(luks_opts.hash_alg); =20 =20 if (strlen(cipher_alg) >=3D QCRYPTO_BLOCK_LUKS_CIPHER_NAME_LEN) { diff --git a/crypto/block.c b/crypto/block.c index b097d45..c382393 100644 --- a/crypto/block.c +++ b/crypto/block.c @@ -61,7 +61,7 @@ QCryptoBlock *qcrypto_block_open(QCryptoBlockOpenOptions = *options, if (options->format >=3D G_N_ELEMENTS(qcrypto_block_drivers) || !qcrypto_block_drivers[options->format]) { error_setg(errp, "Unsupported block driver %s", - QCryptoBlockFormat_lookup[options->format]); + QCryptoBlockFormat_str(options->format)); g_free(block); return NULL; } @@ -92,7 +92,7 @@ QCryptoBlock *qcrypto_block_create(QCryptoBlockCreateOpti= ons *options, if (options->format >=3D G_N_ELEMENTS(qcrypto_block_drivers) || !qcrypto_block_drivers[options->format]) { error_setg(errp, "Unsupported block driver %s", - QCryptoBlockFormat_lookup[options->format]); + QCryptoBlockFormat_str(options->format)); g_free(block); return NULL; } diff --git a/crypto/cipher-afalg.c b/crypto/cipher-afalg.c index 01343b2..cd72284 100644 --- a/crypto/cipher-afalg.c +++ b/crypto/cipher-afalg.c @@ -52,7 +52,7 @@ qcrypto_afalg_cipher_format_name(QCryptoCipherAlgorithm a= lg, return NULL; } =20 - mode_name =3D QCryptoCipherMode_lookup[mode]; + mode_name =3D QCryptoCipherMode_str(mode); name =3D g_strdup_printf("%s(%s)", mode_name, alg_name); =20 return name; diff --git a/crypto/cipher-builtin.c b/crypto/cipher-builtin.c index 16a36d4..d8c811f 100644 --- a/crypto/cipher-builtin.c +++ b/crypto/cipher-builtin.c @@ -247,7 +247,7 @@ qcrypto_cipher_init_aes(QCryptoCipherMode mode, mode !=3D QCRYPTO_CIPHER_MODE_ECB && mode !=3D QCRYPTO_CIPHER_MODE_XTS) { error_setg(errp, "Unsupported cipher mode %s", - QCryptoCipherMode_lookup[mode]); + QCryptoCipherMode_str(mode)); return NULL; } =20 @@ -379,7 +379,7 @@ qcrypto_cipher_init_des_rfb(QCryptoCipherMode mode, =20 if (mode !=3D QCRYPTO_CIPHER_MODE_ECB) { error_setg(errp, "Unsupported cipher mode %s", - QCryptoCipherMode_lookup[mode]); + QCryptoCipherMode_str(mode)); return NULL; } =20 @@ -440,7 +440,7 @@ static QCryptoCipherBuiltin *qcrypto_cipher_ctx_new(QCr= yptoCipherAlgorithm alg, break; default: error_setg(errp, "Unsupported cipher mode %s", - QCryptoCipherMode_lookup[mode]); + QCryptoCipherMode_str(mode)); return NULL; } =20 @@ -460,7 +460,7 @@ static QCryptoCipherBuiltin *qcrypto_cipher_ctx_new(QCr= yptoCipherAlgorithm alg, default: error_setg(errp, "Unsupported cipher algorithm %s", - QCryptoCipherAlgorithm_lookup[alg]); + QCryptoCipherAlgorithm_str(alg)); return NULL; } =20 diff --git a/crypto/cipher-gcrypt.c b/crypto/cipher-gcrypt.c index 0489147..10d75da 100644 --- a/crypto/cipher-gcrypt.c +++ b/crypto/cipher-gcrypt.c @@ -105,7 +105,7 @@ static QCryptoCipherGcrypt *qcrypto_cipher_ctx_new(QCry= ptoCipherAlgorithm alg, break; default: error_setg(errp, "Unsupported cipher mode %s", - QCryptoCipherMode_lookup[mode]); + QCryptoCipherMode_str(mode)); return NULL; } =20 @@ -160,7 +160,7 @@ static QCryptoCipherGcrypt *qcrypto_cipher_ctx_new(QCry= ptoCipherAlgorithm alg, =20 default: error_setg(errp, "Unsupported cipher algorithm %s", - QCryptoCipherAlgorithm_lookup[alg]); + QCryptoCipherAlgorithm_str(alg)); return NULL; } =20 diff --git a/crypto/cipher-nettle.c b/crypto/cipher-nettle.c index c51f119..3848cb3 100644 --- a/crypto/cipher-nettle.c +++ b/crypto/cipher-nettle.c @@ -281,7 +281,7 @@ static QCryptoCipherNettle *qcrypto_cipher_ctx_new(QCry= ptoCipherAlgorithm alg, break; default: error_setg(errp, "Unsupported cipher mode %s", - QCryptoCipherMode_lookup[mode]); + QCryptoCipherMode_str(mode)); return NULL; } =20 @@ -420,7 +420,7 @@ static QCryptoCipherNettle *qcrypto_cipher_ctx_new(QCry= ptoCipherAlgorithm alg, =20 default: error_setg(errp, "Unsupported cipher algorithm %s", - QCryptoCipherAlgorithm_lookup[alg]); + QCryptoCipherAlgorithm_str(alg)); goto error; } =20 @@ -491,7 +491,7 @@ qcrypto_nettle_cipher_encrypt(QCryptoCipher *cipher, =20 default: error_setg(errp, "Unsupported cipher mode %s", - QCryptoCipherMode_lookup[cipher->mode]); + QCryptoCipherMode_str(cipher->mode)); return -1; } return 0; @@ -537,7 +537,7 @@ qcrypto_nettle_cipher_decrypt(QCryptoCipher *cipher, =20 default: error_setg(errp, "Unsupported cipher mode %s", - QCryptoCipherMode_lookup[cipher->mode]); + QCryptoCipherMode_str(cipher->mode)); return -1; } return 0; diff --git a/crypto/hmac-gcrypt.c b/crypto/hmac-gcrypt.c index 76ca61b..0c6f979 100644 --- a/crypto/hmac-gcrypt.c +++ b/crypto/hmac-gcrypt.c @@ -52,7 +52,7 @@ void *qcrypto_hmac_ctx_new(QCryptoHashAlgorithm alg, =20 if (!qcrypto_hmac_supports(alg)) { error_setg(errp, "Unsupported hmac algorithm %s", - QCryptoHashAlgorithm_lookup[alg]); + QCryptoHashAlgorithm_str(alg)); return NULL; } =20 diff --git a/crypto/hmac-glib.c b/crypto/hmac-glib.c index 8cf6b22..a6c1730 100644 --- a/crypto/hmac-glib.c +++ b/crypto/hmac-glib.c @@ -58,7 +58,7 @@ void *qcrypto_hmac_ctx_new(QCryptoHashAlgorithm alg, =20 if (!qcrypto_hmac_supports(alg)) { error_setg(errp, "Unsupported hmac algorithm %s", - QCryptoHashAlgorithm_lookup[alg]); + QCryptoHashAlgorithm_str(alg)); return NULL; } =20 diff --git a/crypto/hmac-nettle.c b/crypto/hmac-nettle.c index 1d5a915..ec2d61b 100644 --- a/crypto/hmac-nettle.c +++ b/crypto/hmac-nettle.c @@ -106,7 +106,7 @@ void *qcrypto_hmac_ctx_new(QCryptoHashAlgorithm alg, =20 if (!qcrypto_hmac_supports(alg)) { error_setg(errp, "Unsupported hmac algorithm %s", - QCryptoHashAlgorithm_lookup[alg]); + QCryptoHashAlgorithm_str(alg)); return NULL; } =20 diff --git a/crypto/pbkdf-gcrypt.c b/crypto/pbkdf-gcrypt.c index 4028985..54ca0d9 100644 --- a/crypto/pbkdf-gcrypt.c +++ b/crypto/pbkdf-gcrypt.c @@ -68,7 +68,7 @@ int qcrypto_pbkdf2(QCryptoHashAlgorithm hash, hash_map[hash] =3D=3D GCRY_MD_NONE) { error_setg_errno(errp, ENOSYS, "PBKDF does not support hash algorithm %s", - QCryptoHashAlgorithm_lookup[hash]); + QCryptoHashAlgorithm_str(hash)); return -1; } =20 diff --git a/crypto/pbkdf-nettle.c b/crypto/pbkdf-nettle.c index 6fb2671..212b3e8 100644 --- a/crypto/pbkdf-nettle.c +++ b/crypto/pbkdf-nettle.c @@ -110,7 +110,7 @@ int qcrypto_pbkdf2(QCryptoHashAlgorithm hash, default: error_setg_errno(errp, ENOSYS, "PBKDF does not support hash algorithm %s", - QCryptoHashAlgorithm_lookup[hash]); + QCryptoHashAlgorithm_str(hash)); return -1; } return 0; diff --git a/hmp.c b/hmp.c index 5d980ac..30819fe 100644 --- a/hmp.c +++ b/hmp.c @@ -106,7 +106,7 @@ void hmp_info_status(Monitor *mon, const QDict *qdict) info->singlestep ? " (single step mode)" : ""); =20 if (!info->running && info->status !=3D RUN_STATE_PAUSED) { - monitor_printf(mon, " (%s)", RunState_lookup[info->status]); + monitor_printf(mon, " (%s)", RunState_str(info->status)); } =20 monitor_printf(mon, "\n"); @@ -171,7 +171,7 @@ void hmp_info_migrate(Monitor *mon, const QDict *qdict) monitor_printf(mon, "capabilities: "); for (cap =3D caps; cap; cap =3D cap->next) { monitor_printf(mon, "%s: %s ", - MigrationCapability_lookup[cap->value->capabili= ty], + MigrationCapability_str(cap->value->capability), cap->value->state ? "on" : "off"); } monitor_printf(mon, "\n"); @@ -179,7 +179,7 @@ void hmp_info_migrate(Monitor *mon, const QDict *qdict) =20 if (info->has_status) { monitor_printf(mon, "Migration status: %s", - MigrationStatus_lookup[info->status]); + MigrationStatus_str(info->status)); if (info->status =3D=3D MIGRATION_STATUS_FAILED && info->has_error_desc) { monitor_printf(mon, " (%s)\n", info->error_desc); @@ -277,7 +277,7 @@ void hmp_info_migrate_capabilities(Monitor *mon, const = QDict *qdict) if (caps) { for (cap =3D caps; cap; cap =3D cap->next) { monitor_printf(mon, "%s: %s\n", - MigrationCapability_lookup[cap->value->capabili= ty], + MigrationCapability_str(cap->value->capability), cap->value->state ? "on" : "off"); } } @@ -294,48 +294,48 @@ void hmp_info_migrate_parameters(Monitor *mon, const = QDict *qdict) if (params) { assert(params->has_compress_level); monitor_printf(mon, "%s: %" PRId64 "\n", - MigrationParameter_lookup[MIGRATION_PARAMETER_COMPRESS_LEVEL], + MigrationParameter_str(MIGRATION_PARAMETER_COMPRESS_LEVEL), params->compress_level); assert(params->has_compress_threads); monitor_printf(mon, "%s: %" PRId64 "\n", - MigrationParameter_lookup[MIGRATION_PARAMETER_COMPRESS_THREADS= ], + MigrationParameter_str(MIGRATION_PARAMETER_COMPRESS_THREADS), params->compress_threads); assert(params->has_decompress_threads); monitor_printf(mon, "%s: %" PRId64 "\n", - MigrationParameter_lookup[MIGRATION_PARAMETER_DECOMPRESS_THREA= DS], + MigrationParameter_str(MIGRATION_PARAMETER_DECOMPRESS_THREADS), params->decompress_threads); assert(params->has_cpu_throttle_initial); monitor_printf(mon, "%s: %" PRId64 "\n", - MigrationParameter_lookup[MIGRATION_PARAMETER_CPU_THROTTLE_INI= TIAL], + MigrationParameter_str(MIGRATION_PARAMETER_CPU_THROTTLE_INITIA= L), params->cpu_throttle_initial); assert(params->has_cpu_throttle_increment); monitor_printf(mon, "%s: %" PRId64 "\n", - MigrationParameter_lookup[MIGRATION_PARAMETER_CPU_THROTTLE_INC= REMENT], + MigrationParameter_str(MIGRATION_PARAMETER_CPU_THROTTLE_INCREM= ENT), params->cpu_throttle_increment); assert(params->has_tls_creds); monitor_printf(mon, "%s: '%s'\n", - MigrationParameter_lookup[MIGRATION_PARAMETER_TLS_CREDS], + MigrationParameter_str(MIGRATION_PARAMETER_TLS_CREDS), params->tls_creds); assert(params->has_tls_hostname); monitor_printf(mon, "%s: '%s'\n", - MigrationParameter_lookup[MIGRATION_PARAMETER_TLS_HOSTNAME], + MigrationParameter_str(MIGRATION_PARAMETER_TLS_HOSTNAME), params->tls_hostname); assert(params->has_max_bandwidth); monitor_printf(mon, "%s: %" PRId64 " bytes/second\n", - MigrationParameter_lookup[MIGRATION_PARAMETER_MAX_BANDWIDTH], + MigrationParameter_str(MIGRATION_PARAMETER_MAX_BANDWIDTH), params->max_bandwidth); assert(params->has_downtime_limit); monitor_printf(mon, "%s: %" PRId64 " milliseconds\n", - MigrationParameter_lookup[MIGRATION_PARAMETER_DOWNTIME_LIMIT], + MigrationParameter_str(MIGRATION_PARAMETER_DOWNTIME_LIMIT), params->downtime_limit); assert(params->has_x_checkpoint_delay); monitor_printf(mon, "%s: %" PRId64 "\n", - MigrationParameter_lookup[MIGRATION_PARAMETER_X_CHECKPOINT_DEL= AY], + MigrationParameter_str(MIGRATION_PARAMETER_X_CHECKPOINT_DELAY), params->x_checkpoint_delay); assert(params->has_block_incremental); monitor_printf(mon, "%s: %s\n", - MigrationParameter_lookup[MIGRATION_PARAMETER_BLOCK_INCREMENTA= L], - params->block_incremental ? "on" : "off"); + MigrationParameter_str(MIGRATION_PARAMETER_BLOCK_INCREMENTAL), + params->block_incremental ? "on" : "off"); } =20 qapi_free_MigrationParameters(params); @@ -431,7 +431,7 @@ static void print_block_info(Monitor *mon, BlockInfo *i= nfo, } if (info->has_io_status && info->io_status !=3D BLOCK_DEVICE_IO_ST= ATUS_OK) { monitor_printf(mon, " I/O status: %s\n", - BlockDeviceIoStatus_lookup[info->io_status]); + BlockDeviceIoStatus_str(info->io_status)); } =20 if (info->removable) { @@ -461,7 +461,7 @@ static void print_block_info(Monitor *mon, BlockInfo *i= nfo, =20 if (inserted->detect_zeroes !=3D BLOCKDEV_DETECT_ZEROES_OPTIONS_OFF) { monitor_printf(mon, " Detect zeroes: %s\n", - BlockdevDetectZeroesOptions_lookup[inserted->detect= _zeroes]); + BlockdevDetectZeroesOptions_str(inserted->detect_zeroes)); } =20 if (inserted->bps || inserted->bps_rd || inserted->bps_wr || @@ -612,7 +612,7 @@ static void hmp_info_VncBasicInfo(Monitor *mon, VncBasi= cInfo *info, name, info->host, info->service, - NetworkAddressFamily_lookup[info->family], + NetworkAddressFamily_str(info->family), info->websocket ? " (Websocket)" : ""); } =20 @@ -622,8 +622,8 @@ static void hmp_info_vnc_authcrypt(Monitor *mon, const = char *indent, VncVencryptSubAuth *vencrypt) { monitor_printf(mon, "%sAuth: %s (Sub: %s)\n", indent, - VncPrimaryAuth_lookup[auth], - vencrypt ? VncVencryptSubAuth_lookup[*vencrypt] : "none= "); + VncPrimaryAuth_str(auth), + vencrypt ? VncVencryptSubAuth_str(*vencrypt) : "none"); } =20 static void hmp_info_vnc_clients(Monitor *mon, VncClientInfoList *client) @@ -738,7 +738,7 @@ void hmp_info_spice(Monitor *mon, const QDict *qdict) monitor_printf(mon, " auth: %s\n", info->auth); monitor_printf(mon, " compiled: %s\n", info->compiled_version); monitor_printf(mon, " mouse-mode: %s\n", - SpiceQueryMouseMode_lookup[info->mouse_mode]); + SpiceQueryMouseMode_str(info->mouse_mode)); =20 if (!info->has_channels || info->channels =3D=3D NULL) { monitor_printf(mon, "Channels: none\n"); @@ -1009,10 +1009,10 @@ void hmp_info_tpm(Monitor *mon, const QDict *qdict) for (info =3D info_list; info; info =3D info->next) { TPMInfo *ti =3D info->value; monitor_printf(mon, " tpm%d: model=3D%s\n", - c, TpmModel_lookup[ti->model]); + c, TpmModel_str(ti->model)); =20 monitor_printf(mon, " \\ %s: type=3D%s", - ti->id, TpmTypeOptionsKind_lookup[ti->options->type= ]); + ti->id, TpmTypeOptionsKind_str(ti->options->type)); =20 switch (ti->options->type) { case TPM_TYPE_OPTIONS_KIND_PASSTHROUGH: @@ -2368,7 +2368,7 @@ void hmp_info_memdev(Monitor *mon, const QDict *qdict) monitor_printf(mon, " prealloc: %s\n", m->value->prealloc ? "true" : "false"); monitor_printf(mon, " policy: %s\n", - HostMemPolicy_lookup[m->value->policy]); + HostMemPolicy_str(m->value->policy)); visit_complete(v, &str); monitor_printf(mon, " host nodes: %s\n", str); =20 @@ -2399,7 +2399,7 @@ void hmp_info_memory_devices(Monitor *mon, const QDic= t *qdict) di =3D value->u.dimm.data; =20 monitor_printf(mon, "Memory device [%s]: \"%s\"\n", - MemoryDeviceInfoKind_lookup[value->type], + MemoryDeviceInfoKind_str(value->type), di->id ? di->id : ""); monitor_printf(mon, " addr: 0x%" PRIx64 "\n", di->addr); monitor_printf(mon, " slot: %" PRId64 "\n", di->slot); @@ -2793,7 +2793,7 @@ void hmp_info_dump(Monitor *mon, const QDict *qdict) DumpQueryResult *result =3D qmp_query_dump(NULL); =20 assert(result && result->status < DUMP_STATUS__MAX); - monitor_printf(mon, "Status: %s\n", DumpStatus_lookup[result->status]); + monitor_printf(mon, "Status: %s\n", DumpStatus_str(result->status)); =20 if (result->status =3D=3D DUMP_STATUS_ACTIVE) { float percent =3D 0; diff --git a/hw/block/fdc.c b/hw/block/fdc.c index 4011290..db40e17 100644 --- a/hw/block/fdc.c +++ b/hw/block/fdc.c @@ -392,9 +392,9 @@ static int pick_geometry(FDrive *drv) FLOPPY_DPRINTF("User requested floppy drive type '%s', " "but inserted medium appears to be a " "%"PRId64" sector '%s' type\n", - FloppyDriveType_lookup[drv->drive], + FloppyDriveType_str(drv->drive), nb_sectors, - FloppyDriveType_lookup[parse->drive]); + FloppyDriveType_str(parse->drive)); } match =3D type_match; } @@ -403,7 +403,7 @@ static int pick_geometry(FDrive *drv) if (match =3D=3D -1) { error_setg(&error_abort, "No candidate geometries present in table= " " for floppy drive type '%s'", - FloppyDriveType_lookup[drv->drive]); + FloppyDriveType_str(drv->drive)); } =20 parse =3D &(fd_formats[match]); diff --git a/hw/char/escc.c b/hw/char/escc.c index 1aca564..3ab831a 100644 --- a/hw/char/escc.c +++ b/hw/char/escc.c @@ -848,7 +848,7 @@ static void sunkbd_handle_event(DeviceState *dev, QemuC= onsole *src, assert(evt->type =3D=3D INPUT_EVENT_KIND_KEY); key =3D evt->u.key.data; qcode =3D qemu_input_key_value_to_qcode(key->key); - trace_escc_sunkbd_event_in(qcode, QKeyCode_lookup[qcode], + trace_escc_sunkbd_event_in(qcode, QKeyCode_str(qcode), key->down); =20 if (qcode =3D=3D Q_KEY_CODE_CAPS_LOCK) { diff --git a/hw/input/virtio-input-hid.c b/hw/input/virtio-input-hid.c index 46c0381..4d3afc1 100644 --- a/hw/input/virtio-input-hid.c +++ b/hw/input/virtio-input-hid.c @@ -209,7 +209,7 @@ static void virtio_input_handle_event(DeviceState *dev,= QemuConsole *src, } else { if (key->down) { fprintf(stderr, "%s: unmapped key: %d [%s]\n", __func__, - qcode, QKeyCode_lookup[qcode]); + qcode, QKeyCode_str(qcode)); } } break; @@ -224,7 +224,7 @@ static void virtio_input_handle_event(DeviceState *dev,= QemuConsole *src, if (btn->down) { fprintf(stderr, "%s: unmapped button: %d [%s]\n", __func__, btn->button, - InputButton_lookup[btn->button]); + InputButton_str(btn->button)); } } break; diff --git a/migration/colo-failover.c b/migration/colo-failover.c index f991486..6563862 100644 --- a/migration/colo-failover.c +++ b/migration/colo-failover.c @@ -34,7 +34,7 @@ static void colo_failover_bh(void *opaque) FAILOVER_STATUS_ACTIVE); if (old_state !=3D FAILOVER_STATUS_REQUIRE) { error_report("Unknown error for failover, old_state =3D %s", - FailoverStatus_lookup[old_state]); + FailoverStatus_str(old_state)); return; } =20 @@ -64,7 +64,7 @@ FailoverStatus failover_set_state(FailoverStatus old_stat= e, =20 old =3D atomic_cmpxchg(&failover_state, old_state, new_state); if (old =3D=3D old_state) { - trace_colo_failover_set_state(FailoverStatus_lookup[new_state]); + trace_colo_failover_set_state(FailoverStatus_str(new_state)); } return old; } diff --git a/migration/colo.c b/migration/colo.c index a425543..dee3aa8 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -61,7 +61,7 @@ static void secondary_vm_do_failover(void) FAILOVER_STATUS_RELAUNCH); if (old_state !=3D FAILOVER_STATUS_ACTIVE) { error_report("Unknown error while do failover for secondary VM= ," - "old_state: %s", FailoverStatus_lookup[old_state]= ); + "old_state: %s", FailoverStatus_str(old_state)); } return; } @@ -91,7 +91,7 @@ static void secondary_vm_do_failover(void) FAILOVER_STATUS_COMPLETED); if (old_state !=3D FAILOVER_STATUS_ACTIVE) { error_report("Incorrect state (%s) while doing failover for " - "secondary VM", FailoverStatus_lookup[old_state]); + "secondary VM", FailoverStatus_str(old_state)); return; } /* Notify COLO incoming thread that failover work is finished */ @@ -126,7 +126,7 @@ static void primary_vm_do_failover(void) FAILOVER_STATUS_COMPLETED); if (old_state !=3D FAILOVER_STATUS_ACTIVE) { error_report("Incorrect state (%s) while doing failover for Primar= y VM", - FailoverStatus_lookup[old_state]); + FailoverStatus_str(old_state)); return; } /* Notify COLO thread that failover work is finished */ @@ -222,7 +222,7 @@ static void colo_send_message(QEMUFile *f, COLOMessage = msg, if (ret < 0) { error_setg_errno(errp, -ret, "Can't send COLO message"); } - trace_colo_send_message(COLOMessage_lookup[msg]); + trace_colo_send_message(COLOMessage_str(msg)); } =20 static void colo_send_message_value(QEMUFile *f, COLOMessage msg, @@ -242,7 +242,7 @@ static void colo_send_message_value(QEMUFile *f, COLOMe= ssage msg, ret =3D qemu_file_get_error(f); if (ret < 0) { error_setg_errno(errp, -ret, "Failed to send value for message:%s", - COLOMessage_lookup[msg]); + COLOMessage_str(msg)); } } =20 @@ -261,7 +261,7 @@ static COLOMessage colo_receive_message(QEMUFile *f, Er= ror **errp) error_setg(errp, "%s: Invalid message", __func__); return msg; } - trace_colo_receive_message(COLOMessage_lookup[msg]); + trace_colo_receive_message(COLOMessage_str(msg)); return msg; } =20 @@ -299,7 +299,7 @@ static uint64_t colo_receive_message_value(QEMUFile *f,= uint32_t expect_msg, ret =3D qemu_file_get_error(f); if (ret < 0) { error_setg_errno(errp, -ret, "Failed to get value for COLO message= : %s", - COLOMessage_lookup[expect_msg]); + COLOMessage_str(expect_msg)); } return value; } diff --git a/migration/global_state.c b/migration/global_state.c index 76cd3a1..8db2f19 100644 --- a/migration/global_state.c +++ b/migration/global_state.c @@ -41,7 +41,7 @@ int global_state_store(void) =20 void global_state_store_running(void) { - const char *state =3D RunState_lookup[RUN_STATE_RUNNING]; + const char *state =3D RunState_str(RUN_STATE_RUNNING); strncpy((char *)global_state.runstate, state, sizeof(global_state.runstate)); } diff --git a/monitor.c b/monitor.c index b45f55d..360757c 100644 --- a/monitor.c +++ b/monitor.c @@ -928,7 +928,7 @@ EventInfoList *qmp_query_events(Error **errp) QAPIEvent e; =20 for (e =3D 0 ; e < QAPI_EVENT__MAX ; e++) { - const char *event_name =3D QAPIEvent_lookup[e]; + const char *event_name =3D QAPIEvent_str(e); assert(event_name !=3D NULL); info =3D g_malloc0(sizeof(*info)); info->value =3D g_malloc0(sizeof(*info->value)); @@ -3250,7 +3250,7 @@ void netdev_add_completion(ReadLineState *rs, int nb_= args, const char *str) len =3D strlen(str); readline_set_completion_index(rs, len); for (i =3D 0; i < NET_CLIENT_DRIVER__MAX; i++) { - add_completion_option(rs, str, NetClientDriver_lookup[i]); + add_completion_option(rs, str, NetClientDriver_str(i)); } } =20 @@ -3434,8 +3434,8 @@ void sendkey_completion(ReadLineState *rs, int nb_arg= s, const char *str) len =3D strlen(str); readline_set_completion_index(rs, len); for (i =3D 0; i < Q_KEY_CODE__MAX; i++) { - if (!strncmp(str, QKeyCode_lookup[i], len)) { - readline_add_completion(rs, QKeyCode_lookup[i]); + if (!strncmp(str, QKeyCode_str(i), len)) { + readline_add_completion(rs, QKeyCode_str(i)); } } } @@ -3538,7 +3538,7 @@ void watchdog_action_completion(ReadLineState *rs, in= t nb_args, const char *str) } readline_set_completion_index(rs, strlen(str)); for (i =3D 0; i < WATCHDOG_EXPIRATION_ACTION__MAX; i++) { - add_completion_option(rs, str, WatchdogExpirationAction_lookup[i]); + add_completion_option(rs, str, WatchdogExpirationAction_str(i)); } } =20 @@ -3552,7 +3552,7 @@ void migrate_set_capability_completion(ReadLineState = *rs, int nb_args, if (nb_args =3D=3D 2) { int i; for (i =3D 0; i < MIGRATION_CAPABILITY__MAX; i++) { - const char *name =3D MigrationCapability_lookup[i]; + const char *name =3D MigrationCapability_str(i); if (!strncmp(str, name, len)) { readline_add_completion(rs, name); } @@ -3573,7 +3573,7 @@ void migrate_set_parameter_completion(ReadLineState *= rs, int nb_args, if (nb_args =3D=3D 2) { int i; for (i =3D 0; i < MIGRATION_PARAMETER__MAX; i++) { - const char *name =3D MigrationParameter_lookup[i]; + const char *name =3D MigrationParameter_str(i); if (!strncmp(str, name, len)) { readline_add_completion(rs, name); } @@ -3852,7 +3852,7 @@ static void handle_qmp_command(JSONMessageParser *par= ser, GQueue *tokens) qdict =3D qdict_get_qdict(qobject_to_qdict(rsp), "error"); if (qdict && !g_strcmp0(qdict_get_try_str(qdict, "class"), - QapiErrorClass_lookup[ERROR_CLASS_COMMAND_NOT_FOUND]))= { + QapiErrorClass_str(ERROR_CLASS_COMMAND_NOT_FOUND))) { /* Provide a more useful error message */ qdict_del(qdict, "desc"); qdict_put_str(qdict, "desc", "Expecting capabilities negotiati= on" diff --git a/net/net.c b/net/net.c index 0e28099..2fa99c0 100644 --- a/net/net.c +++ b/net/net.c @@ -1064,7 +1064,7 @@ static int net_client_init1(const void *object, bool = is_netdev, Error **errp) /* FIXME drop when all init functions store an Error */ if (errp && !*errp) { error_setg(errp, QERR_DEVICE_INIT_FAILED, - NetClientDriver_lookup[netdev->type]); + NetClientDriver_str(netdev->type)); } return -1; } @@ -1288,7 +1288,7 @@ void print_net_client(Monitor *mon, NetClientState *n= c) =20 monitor_printf(mon, "%s: index=3D%d,type=3D%s,%s\n", nc->name, nc->queue_index, - NetClientDriver_lookup[nc->info->type], + NetClientDriver_str(nc->info->type), nc->info_str); if (!QTAILQ_EMPTY(&nc->filters)) { monitor_printf(mon, "filters:\n"); diff --git a/qapi/qmp-dispatch.c b/qapi/qmp-dispatch.c index 5ad36f8..b41fa17 100644 --- a/qapi/qmp-dispatch.c +++ b/qapi/qmp-dispatch.c @@ -118,7 +118,7 @@ static QObject *do_qmp_dispatch(QmpCommandList *cmds, Q= Object *request, QObject *qmp_build_error_object(Error *err) { return qobject_from_jsonf("{ 'class': %s, 'desc': %s }", - QapiErrorClass_lookup[error_get_class(err)], + QapiErrorClass_str(error_get_class(err)), error_get_pretty(err)); } =20 diff --git a/tests/test-qapi-util.c b/tests/test-qapi-util.c index 7e1be1d..0992bdb 100644 --- a/tests/test-qapi-util.c +++ b/tests/test-qapi-util.c @@ -31,7 +31,7 @@ static void test_qapi_enum_parse(void) ret =3D qapi_enum_parse(QType_lookup, "none", -1, &error_abort); g_assert_cmpint(ret, =3D=3D, QTYPE_NONE); =20 - ret =3D qapi_enum_parse(QType_lookup, QType_lookup[QTYPE__MAX - 1], + ret =3D qapi_enum_parse(QType_lookup, QType_str(QTYPE__MAX - 1), QTYPE__MAX - 1, &error_abort); g_assert_cmpint(ret, =3D=3D, QTYPE__MAX - 1); } diff --git a/tests/test-qobject-input-visitor.c b/tests/test-qobject-input-= visitor.c index 5bbfb65..f8720aa 100644 --- a/tests/test-qobject-input-visitor.c +++ b/tests/test-qobject-input-visitor.c @@ -385,7 +385,7 @@ static void test_visitor_in_enum(TestInputVisitorData *= data, for (i =3D 0; i < ENUM_ONE__MAX; i++) { EnumOne res =3D -1; =20 - v =3D visitor_input_test_init(data, "%s", EnumOne_lookup[i]); + v =3D visitor_input_test_init(data, "%s", EnumOne_str(i)); =20 visit_type_EnumOne(v, NULL, &res, &error_abort); g_assert_cmpint(i, =3D=3D, res); @@ -699,7 +699,7 @@ static void test_native_list_integer_helper(TestInputVi= sitorData *data, } } g_string_append_printf(gstr_union, "{ 'type': '%s', 'data': [ %s ] }", - UserDefNativeListUnionKind_lookup[kind], + UserDefNativeListUnionKind_str(kind), gstr_list->str); v =3D visitor_input_test_init_raw(data, gstr_union->str); =20 diff --git a/tests/test-qobject-output-visitor.c b/tests/test-qobject-outpu= t-visitor.c index 7eb1620..d375100 100644 --- a/tests/test-qobject-output-visitor.c +++ b/tests/test-qobject-output-visitor.c @@ -133,7 +133,7 @@ static void test_visitor_out_enum(TestOutputVisitorData= *data, =20 qstr =3D qobject_to_qstring(visitor_get(data)); g_assert(qstr); - g_assert_cmpstr(qstring_get_str(qstr), =3D=3D, EnumOne_lookup[i]); + g_assert_cmpstr(qstring_get_str(qstr), =3D=3D, EnumOne_str(i)); visitor_reset(data); } } diff --git a/tests/test-string-input-visitor.c b/tests/test-string-input-vi= sitor.c index e7a7b80..4f9c36b 100644 --- a/tests/test-string-input-visitor.c +++ b/tests/test-string-input-visitor.c @@ -282,7 +282,7 @@ static void test_visitor_in_enum(TestInputVisitorData *= data, for (i =3D 0; i < ENUM_ONE__MAX; i++) { EnumOne res =3D -1; =20 - v =3D visitor_input_test_init(data, EnumOne_lookup[i]); + v =3D visitor_input_test_init(data, EnumOne_str(i)); =20 visit_type_EnumOne(v, NULL, &res, &err); g_assert(!err); diff --git a/tests/test-string-output-visitor.c b/tests/test-string-output-= visitor.c index e736db3..385cddb 100644 --- a/tests/test-string-output-visitor.c +++ b/tests/test-string-output-visitor.c @@ -194,12 +194,12 @@ static void test_visitor_out_enum(TestOutputVisitorDa= ta *data, =20 str =3D visitor_get(data); if (data->human) { - char *str_human =3D g_strdup_printf("\"%s\"", EnumOne_lookup[i= ]); + char *str_human =3D g_strdup_printf("\"%s\"", EnumOne_str(i)); =20 g_assert_cmpstr(str, =3D=3D, str_human); g_free(str_human); } else { - g_assert_cmpstr(str, =3D=3D, EnumOne_lookup[i]); + g_assert_cmpstr(str, =3D=3D, EnumOne_str(i)); } visitor_reset(data); } diff --git a/tpm.c b/tpm.c index 38f3eb8..111f1ca 100644 --- a/tpm.c +++ b/tpm.c @@ -62,7 +62,7 @@ static void tpm_display_backend_drivers(void) continue; } fprintf(stderr, "%12s %s\n", - TpmType_lookup[i], be_drivers[i]->desc()); + TpmType_str(i), be_drivers[i]->desc()); } fprintf(stderr, "\n"); } diff --git a/ui/input-legacy.c b/ui/input-legacy.c index a5f1e82..6bc3525 100644 --- a/ui/input-legacy.c +++ b/ui/input-legacy.c @@ -62,8 +62,8 @@ int index_from_key(const char *key, size_t key_length) int i; =20 for (i =3D 0; i < Q_KEY_CODE__MAX; i++) { - if (!strncmp(key, QKeyCode_lookup[i], key_length) && - !QKeyCode_lookup[i][key_length]) { + if (!strncmp(key, QKeyCode_str(i), key_length) && + !QKeyCode_str(i)[key_length]) { break; } } diff --git a/ui/input.c b/ui/input.c index af05f06..3422d4a 100644 --- a/ui/input.c +++ b/ui/input.c @@ -151,7 +151,7 @@ void qmp_input_send_event(bool has_device, const char *= device, if (!qemu_input_find_handler(1 << event->type, con)) { error_setg(errp, "Input handler not found for " "event type %s", - InputEventKind_lookup[event->type]); + InputEventKind_str(event->type)); return; } } @@ -213,12 +213,12 @@ static void qemu_input_event_trace(QemuConsole *src, = InputEvent *evt) switch (key->key->type) { case KEY_VALUE_KIND_NUMBER: qcode =3D qemu_input_key_number_to_qcode(key->key->u.number.da= ta); - name =3D QKeyCode_lookup[qcode]; + name =3D QKeyCode_str(qcode); trace_input_event_key_number(idx, key->key->u.number.data, name, key->down); break; case KEY_VALUE_KIND_QCODE: - name =3D QKeyCode_lookup[key->key->u.qcode.data]; + name =3D QKeyCode_str(key->key->u.qcode.data); trace_input_event_key_qcode(idx, name, key->down); break; case KEY_VALUE_KIND__MAX: @@ -228,17 +228,17 @@ static void qemu_input_event_trace(QemuConsole *src, = InputEvent *evt) break; case INPUT_EVENT_KIND_BTN: btn =3D evt->u.btn.data; - name =3D InputButton_lookup[btn->button]; + name =3D InputButton_str(btn->button); trace_input_event_btn(idx, name, btn->down); break; case INPUT_EVENT_KIND_REL: move =3D evt->u.rel.data; - name =3D InputAxis_lookup[move->axis]; + name =3D InputAxis_str(move->axis); trace_input_event_rel(idx, name, move->value); break; case INPUT_EVENT_KIND_ABS: move =3D evt->u.abs.data; - name =3D InputAxis_lookup[move->axis]; + name =3D InputAxis_str(move->axis); trace_input_event_abs(idx, name, move->value); break; case INPUT_EVENT_KIND__MAX: diff --git a/ui/vnc.c b/ui/vnc.c index 651cbb8..e1874a2 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -131,7 +131,7 @@ static void vnc_init_basic_info(SocketAddress *addr, case SOCKET_ADDRESS_TYPE_VSOCK: case SOCKET_ADDRESS_TYPE_FD: error_setg(errp, "Unsupported socket address type %s", - SocketAddressType_lookup[addr->type]); + SocketAddressType_str(addr->type)); break; default: abort(); @@ -416,7 +416,7 @@ VncInfo *qmp_query_vnc(Error **errp) case SOCKET_ADDRESS_TYPE_VSOCK: case SOCKET_ADDRESS_TYPE_FD: error_setg(errp, "Unsupported socket address type %s", - SocketAddressType_lookup[addr->type]); + SocketAddressType_str(addr->type)); goto out_error; default: abort(); @@ -1839,7 +1839,7 @@ static void vnc_release_modifiers(VncState *vs) =20 static const char *code2name(int keycode) { - return QKeyCode_lookup[qemu_input_key_number_to_qcode(keycode)]; + return QKeyCode_str(qemu_input_key_number_to_qcode(keycode)); } =20 static void key_event(VncState *vs, int down, uint32_t sym) diff --git a/vl.c b/vl.c index 8e247cc..0b45e1b 100644 --- a/vl.c +++ b/vl.c @@ -688,7 +688,7 @@ bool runstate_check(RunState state) =20 bool runstate_store(char *str, size_t size) { - const char *state =3D RunState_lookup[current_run_state]; + const char *state =3D RunState_str(current_run_state); size_t len =3D strlen(state) + 1; =20 if (len > size) { @@ -721,8 +721,8 @@ void runstate_set(RunState new_state) =20 if (!runstate_valid_transitions[current_run_state][new_state]) { error_report("invalid runstate transition: '%s' -> '%s'", - RunState_lookup[current_run_state], - RunState_lookup[new_state]); + RunState_str(current_run_state), + RunState_str(new_state)); abort(); } trace_runstate_set(new_state); --=20 2.7.5 From nobody Sat May 4 12:03:49 2024 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.zohomail.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 1503564811789987.2563922217744; Thu, 24 Aug 2017 01:53:31 -0700 (PDT) Received: from localhost ([::1]:47299 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dkntK-0000oF-Ae for importer@patchew.org; Thu, 24 Aug 2017 04:53:30 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37158) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknmP-0003PR-16 for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dknmN-0000PG-L3 for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:21 -0400 Received: from mx1.redhat.com ([209.132.183.28]:37694) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dknmN-0000OY-Ex for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:19 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 640E13680F; Thu, 24 Aug 2017 08:46:18 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-60.ams2.redhat.com [10.36.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 90AC46E0DD; Thu, 24 Aug 2017 08:46:17 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id CEF1111386D3; Thu, 24 Aug 2017 10:46:11 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 640E13680F Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=armbru@redhat.com From: Markus Armbruster To: qemu-devel@nongnu.org Date: Thu, 24 Aug 2017 10:46:09 +0200 Message-Id: <1503564371-26090-15-git-send-email-armbru@redhat.com> In-Reply-To: <1503564371-26090-1-git-send-email-armbru@redhat.com> References: <1503564371-26090-1-git-send-email-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Thu, 24 Aug 2017 08:46:18 +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/16] qapi: Convert indirect uses of FOO_lookup[...] to qapi_enum_lookup() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, mdroth@linux.vnet.ibm.com 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" Signed-off-by: Markus Armbruster Reviewed-by: Marc-Andr=C3=A9 Lureau --- hw/core/qdev-properties.c | 7 +++++-- qapi/qapi-visit-core.c | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c index 078fc5d..7512bd4 100644 --- a/hw/core/qdev-properties.c +++ b/hw/core/qdev-properties.c @@ -72,7 +72,9 @@ static void set_enum(Object *obj, Visitor *v, const char = *name, void *opaque, =20 static void set_default_value_enum(Object *obj, const Property *prop) { - object_property_set_str(obj, prop->info->enum_table[prop->defval.i], + object_property_set_str(obj, + qapi_enum_lookup(prop->info->enum_table, + prop->defval.i), prop->name, &error_abort); } =20 @@ -1095,7 +1097,8 @@ void qdev_prop_set_enum(DeviceState *dev, const char = *name, int value) Property *prop; =20 prop =3D qdev_prop_find(dev, name); - object_property_set_str(OBJECT(dev), prop->info->enum_table[value], + object_property_set_str(OBJECT(dev), + qapi_enum_lookup(prop->info->enum_table, value= ), name, &error_abort); } =20 diff --git a/qapi/qapi-visit-core.c b/qapi/qapi-visit-core.c index f285879..30dc85b 100644 --- a/qapi/qapi-visit-core.c +++ b/qapi/qapi-visit-core.c @@ -345,7 +345,7 @@ static void output_type_enum(Visitor *v, const char *na= me, int *obj, return; } =20 - enum_str =3D (char *)strings[value]; + enum_str =3D (char *)qapi_enum_lookup(strings, value); visit_type_str(v, name, &enum_str, errp); } =20 --=20 2.7.5 From nobody Sat May 4 12:03:49 2024 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.zohomail.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 1503565244113934.1953975068894; Thu, 24 Aug 2017 02:00:44 -0700 (PDT) Received: from localhost ([::1]:47334 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dko0I-0007UE-Nx for importer@patchew.org; Thu, 24 Aug 2017 05:00:42 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37246) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknmS-0003R9-LI for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dknmO-0000Pq-B6 for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:24 -0400 Received: from mx1.redhat.com ([209.132.183.28]:56480) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dknmN-0000P0-US for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:20 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D79057EA90; Thu, 24 Aug 2017 08:46:18 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-60.ams2.redhat.com [10.36.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 00FCE1797E; Thu, 24 Aug 2017 08:46:18 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id D2E4311386D5; Thu, 24 Aug 2017 10:46:11 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com D79057EA90 Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=armbru@redhat.com From: Markus Armbruster To: qemu-devel@nongnu.org Date: Thu, 24 Aug 2017 10:46:10 +0200 Message-Id: <1503564371-26090-16-git-send-email-armbru@redhat.com> In-Reply-To: <1503564371-26090-1-git-send-email-armbru@redhat.com> References: <1503564371-26090-1-git-send-email-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Thu, 24 Aug 2017 08:46:19 +0000 (UTC) Content-Transfer-Encoding: quoted-printable 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 15/16] qapi: Change data type of the FOO_lookup generated for enum FOO X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, mdroth@linux.vnet.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Marc-Andr=C3=A9 Lureau Currently, a FOO_lookup is an array of strings terminated by a NULL sentinel. A future patch will generate enums with "holes". NULL-termination will cease to work then. To prepare for that, store the length in the FOO_lookup by wrapping it in a struct and adding a member for the length. The sentinel will be dropped next. Signed-off-by: Marc-Andr=C3=A9 Lureau Message-Id: <20170822132255.23945-13-marcandre.lureau@redhat.com> [Basically redone] Signed-off-by: Markus Armbruster --- backends/hostmem.c | 2 +- block.c | 2 +- block/blkdebug.c | 4 ++-- block/file-posix.c | 8 +++++--- block/gluster.c | 4 ++-- block/parallels.c | 14 ++++++++------ block/qcow2.c | 4 ++-- block/quorum.c | 2 +- blockdev.c | 2 +- crypto/block-luks.c | 8 ++++---- crypto/secret.c | 2 +- crypto/tlscreds.c | 2 +- hmp.c | 6 +++--- hw/core/qdev-properties.c | 10 +++++----- include/hw/qdev-core.h | 2 +- include/qapi/util.h | 9 +++++++-- include/qapi/visitor.h | 2 +- include/qom/object.h | 4 ++-- migration/global_state.c | 2 +- net/filter.c | 2 +- qapi/qapi-util.c | 12 ++++++------ qapi/qapi-visit-core.c | 24 +++++++++++++----------- qemu-img.c | 2 +- qemu-nbd.c | 2 +- qom/object.c | 16 ++++++++-------- scripts/qapi-visit.py | 2 +- scripts/qapi.py | 13 ++++++++----- tests/check-qom-proplist.c | 15 +++++++++------ tests/test-qapi-util.c | 10 +++++----- tests/test-qobject-input-visitor.c | 2 +- tpm.c | 2 +- 31 files changed, 104 insertions(+), 87 deletions(-) diff --git a/backends/hostmem.c b/backends/hostmem.c index 06e8898..217cff6 100644 --- a/backends/hostmem.c +++ b/backends/hostmem.c @@ -395,7 +395,7 @@ host_memory_backend_class_init(ObjectClass *oc, void *d= ata) host_memory_backend_set_host_nodes, NULL, NULL, &error_abort); object_class_property_add_enum(oc, "policy", "HostMemPolicy", - HostMemPolicy_lookup, + &HostMemPolicy_lookup, host_memory_backend_get_policy, host_memory_backend_set_policy, &error_abort); object_class_property_add_str(oc, "id", get_id, set_id, &error_abort); diff --git a/block.c b/block.c index 2d12131..3bd1eb8 100644 --- a/block.c +++ b/block.c @@ -1332,7 +1332,7 @@ static int bdrv_open_common(BlockDriverState *bs, Blo= ckBackend *file, detect_zeroes =3D qemu_opt_get(opts, "detect-zeroes"); if (detect_zeroes) { BlockdevDetectZeroesOptions value =3D - qapi_enum_parse(BlockdevDetectZeroesOptions_lookup, + qapi_enum_parse(&BlockdevDetectZeroesOptions_lookup, detect_zeroes, BLOCKDEV_DETECT_ZEROES_OPTIONS_OFF, &local_err); diff --git a/block/blkdebug.c b/block/blkdebug.c index b370fce..8e385ac 100644 --- a/block/blkdebug.c +++ b/block/blkdebug.c @@ -169,7 +169,7 @@ static int add_rule(void *opaque, QemuOpts *opts, Error= **errp) error_setg(errp, "Missing event name for rule"); return -1; } - event =3D qapi_enum_parse(BlkdebugEvent_lookup, event_name, -1, errp); + event =3D qapi_enum_parse(&BlkdebugEvent_lookup, event_name, -1, errp); if (event < 0) { return -1; } @@ -732,7 +732,7 @@ static int blkdebug_debug_breakpoint(BlockDriverState *= bs, const char *event, struct BlkdebugRule *rule; int blkdebug_event; =20 - blkdebug_event =3D qapi_enum_parse(BlkdebugEvent_lookup, event, -1, NU= LL); + blkdebug_event =3D qapi_enum_parse(&BlkdebugEvent_lookup, event, -1, N= ULL); if (blkdebug_event < 0) { return -ENOENT; } diff --git a/block/file-posix.c b/block/file-posix.c index bfef91d..6acbd56 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -437,7 +437,8 @@ static int raw_open_common(BlockDriverState *bs, QDict = *options, aio_default =3D (bdrv_flags & BDRV_O_NATIVE_AIO) ? BLOCKDEV_AIO_OPTIONS_NATIVE : BLOCKDEV_AIO_OPTIONS_THREADS; - aio =3D qapi_enum_parse(BlockdevAioOptions_lookup, qemu_opt_get(opts, = "aio"), + aio =3D qapi_enum_parse(&BlockdevAioOptions_lookup, + qemu_opt_get(opts, "aio"), aio_default, &local_err); if (local_err) { error_propagate(errp, local_err); @@ -446,7 +447,8 @@ static int raw_open_common(BlockDriverState *bs, QDict = *options, } s->use_linux_aio =3D (aio =3D=3D BLOCKDEV_AIO_OPTIONS_NATIVE); =20 - locking =3D qapi_enum_parse(OnOffAuto_lookup, qemu_opt_get(opts, "lock= ing"), + locking =3D qapi_enum_parse(&OnOffAuto_lookup, + qemu_opt_get(opts, "locking"), ON_OFF_AUTO_AUTO, &local_err); if (local_err) { error_propagate(errp, local_err); @@ -1973,7 +1975,7 @@ static int raw_create(const char *filename, QemuOpts = *opts, Error **errp) BDRV_SECTOR_SIZE); nocow =3D qemu_opt_get_bool(opts, BLOCK_OPT_NOCOW, false); buf =3D qemu_opt_get_del(opts, BLOCK_OPT_PREALLOC); - prealloc =3D qapi_enum_parse(PreallocMode_lookup, buf, + prealloc =3D qapi_enum_parse(&PreallocMode_lookup, buf, PREALLOC_MODE_OFF, &local_err); g_free(buf); if (local_err) { diff --git a/block/gluster.c b/block/gluster.c index 29f9427..0f4265a 100644 --- a/block/gluster.c +++ b/block/gluster.c @@ -543,7 +543,7 @@ static int qemu_gluster_parse_json(BlockdevOptionsGlust= er *gconf, if (!strcmp(ptr, "tcp")) { ptr =3D "inet"; /* accept legacy "tcp" */ } - type =3D qapi_enum_parse(SocketAddressType_lookup, ptr, -1, NULL); + type =3D qapi_enum_parse(&SocketAddressType_lookup, ptr, -1, NULL); if (type !=3D SOCKET_ADDRESS_TYPE_INET && type !=3D SOCKET_ADDRESS_TYPE_UNIX) { error_setg(&local_err, @@ -1000,7 +1000,7 @@ static int qemu_gluster_create(const char *filename, BDRV_SECTOR_SIZE); =20 tmp =3D qemu_opt_get_del(opts, BLOCK_OPT_PREALLOC); - prealloc =3D qapi_enum_parse(PreallocMode_lookup, tmp, PREALLOC_MODE_O= FF, + prealloc =3D qapi_enum_parse(&PreallocMode_lookup, tmp, PREALLOC_MODE_= OFF, &local_err); g_free(tmp); if (local_err) { diff --git a/block/parallels.c b/block/parallels.c index d812210..cce7336 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -68,13 +68,15 @@ typedef enum ParallelsPreallocMode { PRL_PREALLOC_MODE__MAX =3D 2, } ParallelsPreallocMode; =20 -static const char *prealloc_mode_lookup[] =3D { - "falloc", - "truncate", - NULL, +static QEnumLookup prealloc_mode_lookup =3D { + .array =3D (const char *const[]) { + "falloc", + "truncate", + NULL, + }, + .size =3D PRL_PREALLOC_MODE__MAX }; =20 - typedef struct BDRVParallelsState { /** Locking is conservative, the lock protects * - image file extending (truncate, fallocate) @@ -695,7 +697,7 @@ static int parallels_open(BlockDriverState *bs, QDict *= options, int flags, qemu_opt_get_size_del(opts, PARALLELS_OPT_PREALLOC_SIZE, 0); s->prealloc_size =3D MAX(s->tracks, s->prealloc_size >> BDRV_SECTOR_BI= TS); buf =3D qemu_opt_get_del(opts, PARALLELS_OPT_PREALLOC_MODE); - s->prealloc_mode =3D qapi_enum_parse(prealloc_mode_lookup, buf, + s->prealloc_mode =3D qapi_enum_parse(&prealloc_mode_lookup, buf, PRL_PREALLOC_MODE_FALLOCATE, &local_err); g_free(buf); diff --git a/block/qcow2.c b/block/qcow2.c index eb7c154..0841b7c 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -2931,7 +2931,7 @@ static int qcow2_create(const char *filename, QemuOpt= s *opts, Error **errp) goto finish; } buf =3D qemu_opt_get_del(opts, BLOCK_OPT_PREALLOC); - prealloc =3D qapi_enum_parse(PreallocMode_lookup, buf, + prealloc =3D qapi_enum_parse(&PreallocMode_lookup, buf, PREALLOC_MODE_OFF, &local_err); if (local_err) { error_propagate(errp, local_err); @@ -3621,7 +3621,7 @@ static BlockMeasureInfo *qcow2_measure(QemuOpts *opts= , BlockDriverState *in_bs, } =20 optstr =3D qemu_opt_get_del(opts, BLOCK_OPT_PREALLOC); - prealloc =3D qapi_enum_parse(PreallocMode_lookup, optstr, + prealloc =3D qapi_enum_parse(&PreallocMode_lookup, optstr, PREALLOC_MODE_OFF, &local_err); g_free(optstr); if (local_err) { diff --git a/block/quorum.c b/block/quorum.c index 8d1c9f6..272f9a5 100644 --- a/block/quorum.c +++ b/block/quorum.c @@ -912,7 +912,7 @@ static int quorum_open(BlockDriverState *bs, QDict *opt= ions, int flags, if (!pattern_str) { ret =3D QUORUM_READ_PATTERN_QUORUM; } else { - ret =3D qapi_enum_parse(QuorumReadPattern_lookup, pattern_str, + ret =3D qapi_enum_parse(&QuorumReadPattern_lookup, pattern_str, -EINVAL, NULL); } if (ret < 0) { diff --git a/blockdev.c b/blockdev.c index bfb2a95..796beae 100644 --- a/blockdev.c +++ b/blockdev.c @@ -437,7 +437,7 @@ static void extract_common_blockdev_options(QemuOpts *o= pts, int *bdrv_flags, =20 if (detect_zeroes) { *detect_zeroes =3D - qapi_enum_parse(BlockdevDetectZeroesOptions_lookup, + qapi_enum_parse(&BlockdevDetectZeroesOptions_lookup, qemu_opt_get(opts, "detect-zeroes"), BLOCKDEV_DETECT_ZEROES_OPTIONS_OFF, &local_error); diff --git a/crypto/block-luks.c b/crypto/block-luks.c index 4e82895..36bc856 100644 --- a/crypto/block-luks.c +++ b/crypto/block-luks.c @@ -264,7 +264,7 @@ qcrypto_block_luks_cipher_alg_lookup(QCryptoCipherAlgor= ithm alg, /* XXX replace with qapi_enum_parse() in future, when we can * make that function emit a more friendly error message */ static int qcrypto_block_luks_name_lookup(const char *name, - const char *const *map, + const QEnumLookup *map, const char *type, Error **errp) { @@ -279,19 +279,19 @@ static int qcrypto_block_luks_name_lookup(const char = *name, =20 #define qcrypto_block_luks_cipher_mode_lookup(name, errp) \ qcrypto_block_luks_name_lookup(name, \ - QCryptoCipherMode_lookup, \ + &QCryptoCipherMode_lookup, \ "Cipher mode", \ errp) =20 #define qcrypto_block_luks_hash_name_lookup(name, errp) \ qcrypto_block_luks_name_lookup(name, \ - QCryptoHashAlgorithm_lookup, \ + &QCryptoHashAlgorithm_lookup, \ "Hash algorithm", \ errp) =20 #define qcrypto_block_luks_ivgen_name_lookup(name, errp) \ qcrypto_block_luks_name_lookup(name, \ - QCryptoIVGenAlgorithm_lookup, \ + &QCryptoIVGenAlgorithm_lookup, \ "IV generator", \ errp) =20 diff --git a/crypto/secret.c b/crypto/secret.c index 285ab7a..388abd7 100644 --- a/crypto/secret.c +++ b/crypto/secret.c @@ -378,7 +378,7 @@ qcrypto_secret_class_init(ObjectClass *oc, void *data) NULL); object_class_property_add_enum(oc, "format", "QCryptoSecretFormat", - QCryptoSecretFormat_lookup, + &QCryptoSecretFormat_lookup, qcrypto_secret_prop_get_format, qcrypto_secret_prop_set_format, NULL); diff --git a/crypto/tlscreds.c b/crypto/tlscreds.c index a896553..3cd4103 100644 --- a/crypto/tlscreds.c +++ b/crypto/tlscreds.c @@ -233,7 +233,7 @@ qcrypto_tls_creds_class_init(ObjectClass *oc, void *dat= a) NULL); object_class_property_add_enum(oc, "endpoint", "QCryptoTLSCredsEndpoint", - QCryptoTLSCredsEndpoint_lookup, + &QCryptoTLSCredsEndpoint_lookup, qcrypto_tls_creds_prop_get_endpoint, qcrypto_tls_creds_prop_set_endpoint, NULL); diff --git a/hmp.c b/hmp.c index 30819fe..cd046c6 100644 --- a/hmp.c +++ b/hmp.c @@ -1528,7 +1528,7 @@ void hmp_migrate_set_capability(Monitor *mon, const Q= Dict *qdict) MigrationCapabilityStatusList *caps =3D g_malloc0(sizeof(*caps)); int val; =20 - val =3D qapi_enum_parse(MigrationCapability_lookup, cap, -1, &err); + val =3D qapi_enum_parse(&MigrationCapability_lookup, cap, -1, &err); if (val < 0) { goto end; } @@ -1557,7 +1557,7 @@ void hmp_migrate_set_parameter(Monitor *mon, const QD= ict *qdict) Error *err =3D NULL; int val, ret; =20 - val =3D qapi_enum_parse(MigrationParameter_lookup, param, -1, &err); + val =3D qapi_enum_parse(&MigrationParameter_lookup, param, -1, &err); if (val < 0) { goto cleanup; } @@ -1735,7 +1735,7 @@ void hmp_change(Monitor *mon, const QDict *qdict) } else { if (read_only) { read_only_mode =3D - qapi_enum_parse(BlockdevChangeReadOnlyMode_lookup, + qapi_enum_parse(&BlockdevChangeReadOnlyMode_lookup, read_only, BLOCKDEV_CHANGE_READ_ONLY_MODE_RETAIN, &er= r); if (err) { diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c index 7512bd4..1dc80fc 100644 --- a/hw/core/qdev-properties.c +++ b/hw/core/qdev-properties.c @@ -587,7 +587,7 @@ const PropertyInfo qdev_prop_macaddr =3D { const PropertyInfo qdev_prop_on_off_auto =3D { .name =3D "OnOffAuto", .description =3D "on/off/auto", - .enum_table =3D OnOffAuto_lookup, + .enum_table =3D &OnOffAuto_lookup, .get =3D get_enum, .set =3D set_enum, .set_default_value =3D set_default_value_enum, @@ -599,7 +599,7 @@ QEMU_BUILD_BUG_ON(sizeof(LostTickPolicy) !=3D sizeof(in= t)); =20 const PropertyInfo qdev_prop_losttickpolicy =3D { .name =3D "LostTickPolicy", - .enum_table =3D LostTickPolicy_lookup, + .enum_table =3D &LostTickPolicy_lookup, .get =3D get_enum, .set =3D set_enum, .set_default_value =3D set_default_value_enum, @@ -613,7 +613,7 @@ const PropertyInfo qdev_prop_blockdev_on_error =3D { .name =3D "BlockdevOnError", .description =3D "Error handling policy, " "report/ignore/enospc/stop/auto", - .enum_table =3D BlockdevOnError_lookup, + .enum_table =3D &BlockdevOnError_lookup, .get =3D get_enum, .set =3D set_enum, .set_default_value =3D set_default_value_enum, @@ -627,7 +627,7 @@ const PropertyInfo qdev_prop_bios_chs_trans =3D { .name =3D "BiosAtaTranslation", .description =3D "Logical CHS translation algorithm, " "auto/none/lba/large/rechs", - .enum_table =3D BiosAtaTranslation_lookup, + .enum_table =3D &BiosAtaTranslation_lookup, .get =3D get_enum, .set =3D set_enum, .set_default_value =3D set_default_value_enum, @@ -639,7 +639,7 @@ const PropertyInfo qdev_prop_fdc_drive_type =3D { .name =3D "FdcDriveType", .description =3D "FDC drive type, " "144/288/120/none/auto", - .enum_table =3D FloppyDriveType_lookup, + .enum_table =3D &FloppyDriveType_lookup, .get =3D get_enum, .set =3D set_enum, .set_default_value =3D set_default_value_enum, diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h index ae31728..0891461 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -249,7 +249,7 @@ struct Property { struct PropertyInfo { const char *name; const char *description; - const char * const *enum_table; + const QEnumLookup *enum_table; int (*print)(DeviceState *dev, Property *prop, char *dest, size_t len); void (*set_default_value)(Object *obj, const Property *prop); void (*create)(Object *obj, Property *prop, Error **errp); diff --git a/include/qapi/util.h b/include/qapi/util.h index 5e50d0c..a7c3c64 100644 --- a/include/qapi/util.h +++ b/include/qapi/util.h @@ -11,8 +11,13 @@ #ifndef QAPI_UTIL_H #define QAPI_UTIL_H =20 -const char *qapi_enum_lookup(const char *const lookup[], int val); -int qapi_enum_parse(const char * const lookup[], const char *buf, +typedef struct QEnumLookup { + const char *const *array; + int size; +} QEnumLookup; + +const char *qapi_enum_lookup(const QEnumLookup *lookup, int val); +int qapi_enum_parse(const QEnumLookup *lookup, const char *buf, int def, Error **errp); =20 int parse_qapi_name(const char *name, bool complete); diff --git a/include/qapi/visitor.h b/include/qapi/visitor.h index 0f3b8cb..62a51a5 100644 --- a/include/qapi/visitor.h +++ b/include/qapi/visitor.h @@ -469,7 +469,7 @@ bool visit_optional(Visitor *v, const char *name, bool = *present); * that visit_type_str() must have no unwelcome side effects. */ void visit_type_enum(Visitor *v, const char *name, int *obj, - const char *const strings[], Error **errp); + const QEnumLookup *lookup, Error **errp); =20 /* * Check if visitor is an input visitor. diff --git a/include/qom/object.h b/include/qom/object.h index 1b82899..f3e5cff 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -1415,14 +1415,14 @@ void object_class_property_add_bool(ObjectClass *kl= ass, const char *name, */ void object_property_add_enum(Object *obj, const char *name, const char *typename, - const char * const *strings, + const QEnumLookup *lookup, int (*get)(Object *, Error **), void (*set)(Object *, int, Error **), Error **errp); =20 void object_class_property_add_enum(ObjectClass *klass, const char *name, const char *typename, - const char * const *strings, + const QEnumLookup *lookup, int (*get)(Object *, Error **), void (*set)(Object *, int, Error **), Error **errp); diff --git a/migration/global_state.c b/migration/global_state.c index 8db2f19..dfdaf63 100644 --- a/migration/global_state.c +++ b/migration/global_state.c @@ -88,7 +88,7 @@ static int global_state_post_load(void *opaque, int versi= on_id) s->received =3D true; trace_migrate_global_state_post_load(runstate); =20 - r =3D qapi_enum_parse(RunState_lookup, runstate, -1, &local_err); + r =3D qapi_enum_parse(&RunState_lookup, runstate, -1, &local_err); =20 if (r =3D=3D -1) { if (local_err) { diff --git a/net/filter.c b/net/filter.c index 1dfd2ca..2fd7d7d 100644 --- a/net/filter.c +++ b/net/filter.c @@ -179,7 +179,7 @@ static void netfilter_init(Object *obj) netfilter_get_netdev_id, netfilter_set_netdev_= id, NULL); object_property_add_enum(obj, "queue", "NetFilterDirection", - NetFilterDirection_lookup, + &NetFilterDirection_lookup, netfilter_get_direction, netfilter_set_direct= ion, NULL); object_property_add_str(obj, "status", diff --git a/qapi/qapi-util.c b/qapi/qapi-util.c index 7af2f04..e9b266b 100644 --- a/qapi/qapi-util.c +++ b/qapi/qapi-util.c @@ -14,14 +14,14 @@ #include "qapi/error.h" #include "qemu-common.h" =20 -const char *qapi_enum_lookup(const char *const lookup[], int val) +const char *qapi_enum_lookup(const QEnumLookup *lookup, int val) { - assert(val >=3D 0); + assert(val >=3D 0 && val < lookup->size); =20 - return lookup[val]; + return lookup->array[val]; } =20 -int qapi_enum_parse(const char * const lookup[], const char *buf, +int qapi_enum_parse(const QEnumLookup *lookup, const char *buf, int def, Error **errp) { int i; @@ -30,8 +30,8 @@ int qapi_enum_parse(const char * const lookup[], const ch= ar *buf, return def; } =20 - for (i =3D 0; lookup[i]; i++) { - if (!strcmp(buf, lookup[i])) { + for (i =3D 0; i < lookup->size; i++) { + if (!strcmp(buf, lookup->array[i])) { return i; } } diff --git a/qapi/qapi-visit-core.c b/qapi/qapi-visit-core.c index 30dc85b..3dcb968 100644 --- a/qapi/qapi-visit-core.c +++ b/qapi/qapi-visit-core.c @@ -333,24 +333,26 @@ void visit_type_null(Visitor *v, const char *name, QN= ull **obj, } =20 static void output_type_enum(Visitor *v, const char *name, int *obj, - const char *const strings[], Error **errp) + const QEnumLookup *lookup, Error **errp) { - int i =3D 0; int value =3D *obj; char *enum_str; =20 - while (strings[i++] !=3D NULL); - if (value < 0 || value >=3D i - 1) { + /* + * TODO why is this an error, not an assertion? If assertion: + * delete, and rely on qapi_enum_lookup() + */ + if (value < 0 || value >=3D lookup->size) { error_setg(errp, QERR_INVALID_PARAMETER, name ? name : "null"); return; } =20 - enum_str =3D (char *)qapi_enum_lookup(strings, value); + enum_str =3D (char *)qapi_enum_lookup(lookup, value); visit_type_str(v, name, &enum_str, errp); } =20 static void input_type_enum(Visitor *v, const char *name, int *obj, - const char *const strings[], Error **errp) + const QEnumLookup *lookup, Error **errp) { Error *local_err =3D NULL; int64_t value; @@ -362,7 +364,7 @@ static void input_type_enum(Visitor *v, const char *nam= e, int *obj, return; } =20 - value =3D qapi_enum_parse(strings, enum_str, -1, NULL); + value =3D qapi_enum_parse(lookup, enum_str, -1, NULL); if (value < 0) { error_setg(errp, QERR_INVALID_PARAMETER, enum_str); g_free(enum_str); @@ -374,16 +376,16 @@ static void input_type_enum(Visitor *v, const char *n= ame, int *obj, } =20 void visit_type_enum(Visitor *v, const char *name, int *obj, - const char *const strings[], Error **errp) + const QEnumLookup *lookup, Error **errp) { - assert(obj && strings); + assert(obj && lookup); trace_visit_type_enum(v, name, obj); switch (v->type) { case VISITOR_INPUT: - input_type_enum(v, name, obj, strings, errp); + input_type_enum(v, name, obj, lookup, errp); break; case VISITOR_OUTPUT: - output_type_enum(v, name, obj, strings, errp); + output_type_enum(v, name, obj, lookup, errp); break; case VISITOR_CLONE: /* nothing further to do, scalar value was already copied by diff --git a/qemu-img.c b/qemu-img.c index a72a2e3..df984b1 100644 --- a/qemu-img.c +++ b/qemu-img.c @@ -3489,7 +3489,7 @@ static int img_resize(int argc, char **argv) image_opts =3D true; break; case OPTION_PREALLOCATION: - prealloc =3D qapi_enum_parse(PreallocMode_lookup, optarg, + prealloc =3D qapi_enum_parse(&PreallocMode_lookup, optarg, PREALLOC_MODE__MAX, NULL); if (prealloc =3D=3D PREALLOC_MODE__MAX) { error_report("Invalid preallocation mode '%s'", optarg); diff --git a/qemu-nbd.c b/qemu-nbd.c index a97f3f4..d75ca51 100644 --- a/qemu-nbd.c +++ b/qemu-nbd.c @@ -638,7 +638,7 @@ int main(int argc, char **argv) break; case QEMU_NBD_OPT_DETECT_ZEROES: detect_zeroes =3D - qapi_enum_parse(BlockdevDetectZeroesOptions_lookup, + qapi_enum_parse(&BlockdevDetectZeroesOptions_lookup, optarg, BLOCKDEV_DETECT_ZEROES_OPTIONS_OFF, &local_err); diff --git a/qom/object.c b/qom/object.c index fe6e744..3e18537 100644 --- a/qom/object.c +++ b/qom/object.c @@ -1246,7 +1246,7 @@ uint64_t object_property_get_uint(Object *obj, const = char *name, } =20 typedef struct EnumProperty { - const char * const *strings; + const QEnumLookup *lookup; int (*get)(Object *, Error **); void (*set)(Object *, int, Error **); } EnumProperty; @@ -1284,7 +1284,7 @@ int object_property_get_enum(Object *obj, const char = *name, visit_complete(v, &str); visit_free(v); v =3D string_input_visitor_new(str); - visit_type_enum(v, name, &ret, enumprop->strings, errp); + visit_type_enum(v, name, &ret, enumprop->lookup, errp); =20 g_free(str); visit_free(v); @@ -1950,7 +1950,7 @@ static void property_get_enum(Object *obj, Visitor *v= , const char *name, return; } =20 - visit_type_enum(v, name, &value, prop->strings, errp); + visit_type_enum(v, name, &value, prop->lookup, errp); } =20 static void property_set_enum(Object *obj, Visitor *v, const char *name, @@ -1960,7 +1960,7 @@ static void property_set_enum(Object *obj, Visitor *v= , const char *name, int value; Error *err =3D NULL; =20 - visit_type_enum(v, name, &value, prop->strings, &err); + visit_type_enum(v, name, &value, prop->lookup, &err); if (err) { error_propagate(errp, err); return; @@ -1977,7 +1977,7 @@ static void property_release_enum(Object *obj, const = char *name, =20 void object_property_add_enum(Object *obj, const char *name, const char *typename, - const char * const *strings, + const QEnumLookup *lookup, int (*get)(Object *, Error **), void (*set)(Object *, int, Error **), Error **errp) @@ -1985,7 +1985,7 @@ void object_property_add_enum(Object *obj, const char= *name, Error *local_err =3D NULL; EnumProperty *prop =3D g_malloc(sizeof(*prop)); =20 - prop->strings =3D strings; + prop->lookup =3D lookup; prop->get =3D get; prop->set =3D set; =20 @@ -2002,7 +2002,7 @@ void object_property_add_enum(Object *obj, const char= *name, =20 void object_class_property_add_enum(ObjectClass *klass, const char *name, const char *typename, - const char * const *strings, + const QEnumLookup *lookup, int (*get)(Object *, Error **), void (*set)(Object *, int, Error **), Error **errp) @@ -2010,7 +2010,7 @@ void object_class_property_add_enum(ObjectClass *klas= s, const char *name, Error *local_err =3D NULL; EnumProperty *prop =3D g_malloc(sizeof(*prop)); =20 - prop->strings =3D strings; + prop->lookup =3D lookup; prop->get =3D get; prop->set =3D set; =20 diff --git a/scripts/qapi-visit.py b/scripts/qapi-visit.py index bd0b742..7e1cfc1 100644 --- a/scripts/qapi-visit.py +++ b/scripts/qapi-visit.py @@ -153,7 +153,7 @@ def gen_visit_enum(name): void visit_type_%(c_name)s(Visitor *v, const char *name, %(c_name)s *obj, = Error **errp) { int value =3D *obj; - visit_type_enum(v, name, &value, %(c_name)s_lookup, errp); + visit_type_enum(v, name, &value, &%(c_name)s_lookup, errp); *obj =3D value; } ''', diff --git a/scripts/qapi.py b/scripts/qapi.py index 1cd713d..61be538 100644 --- a/scripts/qapi.py +++ b/scripts/qapi.py @@ -1849,19 +1849,22 @@ def guardend(name): def gen_enum_lookup(name, values, prefix=3DNone): ret =3D mcgen(''' =20 -const char *const %(c_name)s_lookup[] =3D { +const QEnumLookup %(c_name)s_lookup =3D { + .array =3D (const char *const[]) { ''', c_name=3Dc_name(name)) for value in values: index =3D c_enum_const(name, value, prefix) ret +=3D mcgen(''' - [%(index)s] =3D "%(value)s", + [%(index)s] =3D "%(value)s", ''', index=3Dindex, value=3Dvalue) =20 max_index =3D c_enum_const(name, '_MAX', prefix) ret +=3D mcgen(''' - [%(max_index)s] =3D NULL, + [%(max_index)s] =3D NULL, + }, + .size =3D %(max_index)s }; ''', max_index=3Dmax_index) @@ -1895,9 +1898,9 @@ typedef enum %(c_name)s { ret +=3D mcgen(''' =20 #define %(c_name)s_str(val) \\ - qapi_enum_lookup(%(c_name)s_lookup, (val)) + qapi_enum_lookup(&%(c_name)s_lookup, (val)) =20 -extern const char *const %(c_name)s_lookup[]; +extern const QEnumLookup %(c_name)s_lookup; ''', c_name=3Dc_name(name)) return ret diff --git a/tests/check-qom-proplist.c b/tests/check-qom-proplist.c index c51e6e7..07e351f 100644 --- a/tests/check-qom-proplist.c +++ b/tests/check-qom-proplist.c @@ -46,11 +46,14 @@ enum DummyAnimal { DUMMY_LAST, }; =20 -static const char *const dummy_animal_map[DUMMY_LAST + 1] =3D { - [DUMMY_FROG] =3D "frog", - [DUMMY_ALLIGATOR] =3D "alligator", - [DUMMY_PLATYPUS] =3D "platypus", - [DUMMY_LAST] =3D NULL, +const QEnumLookup dummy_animal_map =3D { + .array =3D (const char *const[]) { + [DUMMY_FROG] =3D "frog", + [DUMMY_ALLIGATOR] =3D "alligator", + [DUMMY_PLATYPUS] =3D "platypus", + [DUMMY_LAST] =3D NULL, + }, + .size =3D DUMMY_LAST }; =20 struct DummyObject { @@ -142,7 +145,7 @@ static void dummy_class_init(ObjectClass *cls, void *da= ta) NULL); object_class_property_add_enum(cls, "av", "DummyAnimal", - dummy_animal_map, + &dummy_animal_map, dummy_get_av, dummy_set_av, NULL); diff --git a/tests/test-qapi-util.c b/tests/test-qapi-util.c index 0992bdb..4b5e4f8 100644 --- a/tests/test-qapi-util.c +++ b/tests/test-qapi-util.c @@ -19,19 +19,19 @@ static void test_qapi_enum_parse(void) Error *err =3D NULL; int ret; =20 - ret =3D qapi_enum_parse(QType_lookup, NULL, QTYPE_NONE, &error_abort); + ret =3D qapi_enum_parse(&QType_lookup, NULL, QTYPE_NONE, &error_abort); g_assert_cmpint(ret, =3D=3D, QTYPE_NONE); =20 - ret =3D qapi_enum_parse(QType_lookup, "junk", -1, NULL); + ret =3D qapi_enum_parse(&QType_lookup, "junk", -1, NULL); g_assert_cmpint(ret, =3D=3D, -1); =20 - ret =3D qapi_enum_parse(QType_lookup, "junk", -1, &err); + ret =3D qapi_enum_parse(&QType_lookup, "junk", -1, &err); error_free_or_abort(&err); =20 - ret =3D qapi_enum_parse(QType_lookup, "none", -1, &error_abort); + ret =3D qapi_enum_parse(&QType_lookup, "none", -1, &error_abort); g_assert_cmpint(ret, =3D=3D, QTYPE_NONE); =20 - ret =3D qapi_enum_parse(QType_lookup, QType_str(QTYPE__MAX - 1), + ret =3D qapi_enum_parse(&QType_lookup, QType_str(QTYPE__MAX - 1), QTYPE__MAX - 1, &error_abort); g_assert_cmpint(ret, =3D=3D, QTYPE__MAX - 1); } diff --git a/tests/test-qobject-input-visitor.c b/tests/test-qobject-input-= visitor.c index f8720aa..fe59181 100644 --- a/tests/test-qobject-input-visitor.c +++ b/tests/test-qobject-input-visitor.c @@ -1110,7 +1110,7 @@ static void test_visitor_in_fail_struct_missing(TestI= nputVisitorData *data, error_free_or_abort(&err); visit_optional(v, "optional", &present); g_assert(!present); - visit_type_enum(v, "enum", &en, EnumOne_lookup, &err); + visit_type_enum(v, "enum", &en, &EnumOne_lookup, &err); error_free_or_abort(&err); visit_type_int(v, "i64", &i64, &err); error_free_or_abort(&err); diff --git a/tpm.c b/tpm.c index 111f1ca..2d830d0 100644 --- a/tpm.c +++ b/tpm.c @@ -33,7 +33,7 @@ void tpm_register_model(enum TpmModel model) =20 const TPMDriverOps *tpm_get_backend_driver(const char *type) { - int i =3D qapi_enum_parse(TpmType_lookup, type, -1, NULL); + int i =3D qapi_enum_parse(&TpmType_lookup, type, -1, NULL); =20 return i >=3D 0 ? be_drivers[i] : NULL; } --=20 2.7.5 From nobody Sat May 4 12:03:49 2024 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.zohomail.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 1503564815052188.65714551071335; Thu, 24 Aug 2017 01:53:35 -0700 (PDT) Received: from localhost ([::1]:47300 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dkntN-0000rP-TT for importer@patchew.org; Thu, 24 Aug 2017 04:53:33 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37160) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dknmP-0003PS-4L for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dknmN-0000PQ-ML for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:21 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53590) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dknmN-0000Om-HK for qemu-devel@nongnu.org; Thu, 24 Aug 2017 04:46:19 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 824354E33B; Thu, 24 Aug 2017 08:46:18 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-60.ams2.redhat.com [10.36.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 04B7A7F543; Thu, 24 Aug 2017 08:46:18 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id D624611386D6; Thu, 24 Aug 2017 10:46:11 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 824354E33B Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=armbru@redhat.com From: Markus Armbruster To: qemu-devel@nongnu.org Date: Thu, 24 Aug 2017 10:46:11 +0200 Message-Id: <1503564371-26090-17-git-send-email-armbru@redhat.com> In-Reply-To: <1503564371-26090-1-git-send-email-armbru@redhat.com> References: <1503564371-26090-1-git-send-email-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Thu, 24 Aug 2017 08:46:18 +0000 (UTC) Content-Transfer-Encoding: quoted-printable 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 16/16] qapi: drop the sentinel in enum array X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, mdroth@linux.vnet.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Marc-Andr=C3=A9 Lureau Now that all usages have been converted to user lookup helpers. Signed-off-by: Marc-Andr=C3=A9 Lureau Message-Id: <20170822132255.23945-14-marcandre.lureau@redhat.com> [Rebased, superfluous local variable dropped, missing check-qom-proplist.c update added] Signed-off-by: Markus Armbruster --- block/parallels.c | 1 - scripts/qapi.py | 4 +--- tests/check-qom-proplist.c | 1 - 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/block/parallels.c b/block/parallels.c index cce7336..2b6c6e5 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -72,7 +72,6 @@ static QEnumLookup prealloc_mode_lookup =3D { .array =3D (const char *const[]) { "falloc", "truncate", - NULL, }, .size =3D PRL_PREALLOC_MODE__MAX }; diff --git a/scripts/qapi.py b/scripts/qapi.py index 61be538..a0993ee 100644 --- a/scripts/qapi.py +++ b/scripts/qapi.py @@ -1860,14 +1860,12 @@ const QEnumLookup %(c_name)s_lookup =3D { ''', index=3Dindex, value=3Dvalue) =20 - max_index =3D c_enum_const(name, '_MAX', prefix) ret +=3D mcgen(''' - [%(max_index)s] =3D NULL, }, .size =3D %(max_index)s }; ''', - max_index=3Dmax_index) + max_index=3Dc_enum_const(name, '_MAX', prefix)) return ret =20 =20 diff --git a/tests/check-qom-proplist.c b/tests/check-qom-proplist.c index 07e351f..92898e1 100644 --- a/tests/check-qom-proplist.c +++ b/tests/check-qom-proplist.c @@ -51,7 +51,6 @@ const QEnumLookup dummy_animal_map =3D { [DUMMY_FROG] =3D "frog", [DUMMY_ALLIGATOR] =3D "alligator", [DUMMY_PLATYPUS] =3D "platypus", - [DUMMY_LAST] =3D NULL, }, .size =3D DUMMY_LAST }; --=20 2.7.5