diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2017-06-22 11:34:38 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2017-06-22 11:34:39 +0100 |
commit | 84e3d0725b06bdf8c6985788caa7776d6b7353ce (patch) | |
tree | e4b273590132a034fe693debb52e7037bb7730f2 /qapi | |
parent | db7a99cdc1d0f4d8cbf7c41ce9e570dce04f0a11 (diff) | |
parent | 269c20b2bbd2aa8531e0cdc741fb166f290d7a2b (diff) | |
download | qemu-84e3d0725b06bdf8c6985788caa7776d6b7353ce.zip qemu-84e3d0725b06bdf8c6985788caa7776d6b7353ce.tar.gz qemu-84e3d0725b06bdf8c6985788caa7776d6b7353ce.tar.bz2 |
Merge remote-tracking branch 'remotes/armbru/tags/pull-qapi-2017-06-09-v2' into staging
QAPI patches for 2017-06-09
# gpg: Signature made Tue 20 Jun 2017 13:31:39 BST
# gpg: using RSA key 0x3870B400EB918653
# gpg: Good signature from "Markus Armbruster <armbru@redhat.com>"
# gpg: aka "Markus Armbruster <armbru@pond.sub.org>"
# Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867 4E5F 3870 B400 EB91 8653
* remotes/armbru/tags/pull-qapi-2017-06-09-v2: (41 commits)
tests/qdict: check more get_try_int() cases
console: use get_uint() for "head" property
i386/cpu: use get_uint() for "min-level"/"min-xlevel" properties
numa: use get_uint() for "size" property
pnv-core: use get_uint() for "core-pir" property
pvpanic: use get_uint() for "ioport" property
auxbus: use get_uint() for "addr" property
arm: use get_uint() for "mp-affinity" property
xen: use get_uint() for "max-ram-below-4g" property
pc: use get_uint() for "hpet-intcap" property
pc: use get_uint() for "apic-id" property
pc: use get_uint() for "iobase" property
acpi: use get_uint() for "pci-hole*" properties
acpi: use get_uint() for various acpi properties
acpi: use get_uint() for "acpi-pcihp-io*" properties
platform-bus: use get_uint() for "addr" property
bcm2835_fb: use {get, set}_uint() for "vcram-size" and "vcram-base"
aspeed: use {set, get}_uint() for "ram-size" property
pcihp: use get_uint() for "bsel" property
pc-dimm: make "size" property uint64
...
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'qapi')
-rw-r--r-- | qapi/qapi-clone-visitor.c | 2 | ||||
-rw-r--r-- | qapi/qapi-dealloc-visitor.c | 2 | ||||
-rw-r--r-- | qapi/qapi-visit-core.c | 6 | ||||
-rw-r--r-- | qapi/qobject-input-visitor.c | 58 | ||||
-rw-r--r-- | qapi/qobject-output-visitor.c | 7 | ||||
-rw-r--r-- | qapi/trace-events | 2 |
6 files changed, 36 insertions, 41 deletions
diff --git a/qapi/qapi-clone-visitor.c b/qapi/qapi-clone-visitor.c index de756bf..ed16d3a 100644 --- a/qapi/qapi-clone-visitor.c +++ b/qapi/qapi-clone-visitor.c @@ -70,7 +70,7 @@ static GenericList *qapi_clone_next_list(Visitor *v, GenericList *tail, static void qapi_clone_start_alternate(Visitor *v, const char *name, GenericAlternate **obj, size_t size, - bool promote_int, Error **errp) + Error **errp) { qapi_clone_start_struct(v, name, (void **)obj, size, errp); } diff --git a/qapi/qapi-dealloc-visitor.c b/qapi/qapi-dealloc-visitor.c index e39457b..fd6f9fb 100644 --- a/qapi/qapi-dealloc-visitor.c +++ b/qapi/qapi-dealloc-visitor.c @@ -38,7 +38,7 @@ static void qapi_dealloc_end_struct(Visitor *v, void **obj) static void qapi_dealloc_start_alternate(Visitor *v, const char *name, GenericAlternate **obj, size_t size, - bool promote_int, Error **errp) + Error **errp) { } diff --git a/qapi/qapi-visit-core.c b/qapi/qapi-visit-core.c index 43a09d1..935a2c5 100644 --- a/qapi/qapi-visit-core.c +++ b/qapi/qapi-visit-core.c @@ -106,15 +106,15 @@ void visit_end_list(Visitor *v, void **obj) void visit_start_alternate(Visitor *v, const char *name, GenericAlternate **obj, size_t size, - bool promote_int, Error **errp) + Error **errp) { Error *err = NULL; assert(obj && size >= sizeof(GenericAlternate)); assert(!(v->type & VISITOR_OUTPUT) || *obj); - trace_visit_start_alternate(v, name, obj, size, promote_int); + trace_visit_start_alternate(v, name, obj, size); if (v->start_alternate) { - v->start_alternate(v, name, obj, size, promote_int, &err); + v->start_alternate(v, name, obj, size, &err); } if (v->type & VISITOR_INPUT) { assert(v->start_alternate && !err != !*obj); diff --git a/qapi/qobject-input-visitor.c b/qapi/qobject-input-visitor.c index eac40f6..35aff78 100644 --- a/qapi/qobject-input-visitor.c +++ b/qapi/qobject-input-visitor.c @@ -367,7 +367,7 @@ static void qobject_input_end_list(Visitor *v, void **obj) static void qobject_input_start_alternate(Visitor *v, const char *name, GenericAlternate **obj, size_t size, - bool promote_int, Error **errp) + Error **errp) { QObjectInputVisitor *qiv = to_qiv(v); QObject *qobj = qobject_input_get_object(qiv, name, false, errp); @@ -378,9 +378,6 @@ static void qobject_input_start_alternate(Visitor *v, const char *name, } *obj = g_malloc0(size); (*obj)->type = qobject_type(qobj); - if (promote_int && (*obj)->type == QTYPE_QINT) { - (*obj)->type = QTYPE_QFLOAT; - } } static void qobject_input_type_int64(Visitor *v, const char *name, int64_t *obj, @@ -388,22 +385,18 @@ static void qobject_input_type_int64(Visitor *v, const char *name, int64_t *obj, { QObjectInputVisitor *qiv = to_qiv(v); QObject *qobj = qobject_input_get_object(qiv, name, true, errp); - QInt *qint; + QNum *qnum; if (!qobj) { return; } - qint = qobject_to_qint(qobj); - if (!qint) { + qnum = qobject_to_qnum(qobj); + if (!qnum || !qnum_get_try_int(qnum, obj)) { error_setg(errp, QERR_INVALID_PARAMETER_TYPE, full_name(qiv, name), "integer"); - return; } - - *obj = qint_get_int(qint); } - static void qobject_input_type_int64_keyval(Visitor *v, const char *name, int64_t *obj, Error **errp) { @@ -424,22 +417,32 @@ static void qobject_input_type_int64_keyval(Visitor *v, const char *name, static void qobject_input_type_uint64(Visitor *v, const char *name, uint64_t *obj, Error **errp) { - /* FIXME: qobject_to_qint mishandles values over INT64_MAX */ QObjectInputVisitor *qiv = to_qiv(v); QObject *qobj = qobject_input_get_object(qiv, name, true, errp); - QInt *qint; + QNum *qnum; + int64_t val; if (!qobj) { return; } - qint = qobject_to_qint(qobj); - if (!qint) { - error_setg(errp, QERR_INVALID_PARAMETER_TYPE, - full_name(qiv, name), "integer"); + qnum = qobject_to_qnum(qobj); + if (!qnum) { + goto err; + } + + if (qnum_get_try_uint(qnum, obj)) { return; } - *obj = qint_get_int(qint); + /* Need to accept negative values for backward compatibility */ + if (qnum_get_try_int(qnum, &val)) { + *obj = val; + return; + } + +err: + error_setg(errp, QERR_INVALID_PARAMETER_VALUE, + full_name(qiv, name), "uint64"); } static void qobject_input_type_uint64_keyval(Visitor *v, const char *name, @@ -534,26 +537,19 @@ static void qobject_input_type_number(Visitor *v, const char *name, double *obj, { QObjectInputVisitor *qiv = to_qiv(v); QObject *qobj = qobject_input_get_object(qiv, name, true, errp); - QInt *qint; - QFloat *qfloat; + QNum *qnum; if (!qobj) { return; } - qint = qobject_to_qint(qobj); - if (qint) { - *obj = qint_get_int(qobject_to_qint(qobj)); - return; - } - - qfloat = qobject_to_qfloat(qobj); - if (qfloat) { - *obj = qfloat_get_double(qobject_to_qfloat(qobj)); + qnum = qobject_to_qnum(qobj); + if (!qnum) { + error_setg(errp, QERR_INVALID_PARAMETER_TYPE, + full_name(qiv, name), "number"); return; } - error_setg(errp, QERR_INVALID_PARAMETER_TYPE, - full_name(qiv, name), "number"); + *obj = qnum_get_double(qnum); } static void qobject_input_type_number_keyval(Visitor *v, const char *name, diff --git a/qapi/qobject-output-visitor.c b/qapi/qobject-output-visitor.c index 8711270..70be84c 100644 --- a/qapi/qobject-output-visitor.c +++ b/qapi/qobject-output-visitor.c @@ -144,15 +144,14 @@ static void qobject_output_type_int64(Visitor *v, const char *name, int64_t *obj, Error **errp) { QObjectOutputVisitor *qov = to_qov(v); - qobject_output_add(qov, name, qint_from_int(*obj)); + qobject_output_add(qov, name, qnum_from_int(*obj)); } static void qobject_output_type_uint64(Visitor *v, const char *name, uint64_t *obj, Error **errp) { - /* FIXME values larger than INT64_MAX become negative */ QObjectOutputVisitor *qov = to_qov(v); - qobject_output_add(qov, name, qint_from_int(*obj)); + qobject_output_add(qov, name, qnum_from_uint(*obj)); } static void qobject_output_type_bool(Visitor *v, const char *name, bool *obj, @@ -177,7 +176,7 @@ static void qobject_output_type_number(Visitor *v, const char *name, double *obj, Error **errp) { QObjectOutputVisitor *qov = to_qov(v); - qobject_output_add(qov, name, qfloat_from_double(*obj)); + qobject_output_add(qov, name, qnum_from_double(*obj)); } static void qobject_output_type_any(Visitor *v, const char *name, diff --git a/qapi/trace-events b/qapi/trace-events index 339cacf..3b57aba 100644 --- a/qapi/trace-events +++ b/qapi/trace-events @@ -11,7 +11,7 @@ visit_next_list(void *v, void *tail, size_t size) "v=%p tail=%p size=%zu" visit_check_list(void *v) "v=%p" visit_end_list(void *v, void *obj) "v=%p obj=%p" -visit_start_alternate(void *v, const char *name, void *obj, size_t size, bool promote_int) "v=%p name=%s obj=%p size=%zu promote_int=%d" +visit_start_alternate(void *v, const char *name, void *obj, size_t size) "v=%p name=%s obj=%p size=%zu" visit_end_alternate(void *v, void *obj) "v=%p obj=%p" visit_optional(void *v, const char *name, bool *present) "v=%p name=%s present=%p" |