From 17b74b98676aee5bc470b173b1e528d2fce2cf18 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Wed, 4 May 2016 18:49:17 +0200 Subject: [PATCH] migration: Move qjson.[ch] to migration/ Type QJSON lets you build JSON text. Its interface mirrors (a subset of) abstract JSON syntax. QAPI output visitors also produce JSON text. They assert their preconditions and invariants, and therefore abort on incorrect use. Contrastingly, QJSON does *not* detect incorrect use. It happily produces invalid JSON then. This is what migration wants. QJSON was designed for migration, and migration is its only user. Move it to migration/ for proper coverage by MAINTAINERS, and to deter accidental use outside migration. [Pointed out by Eric: QJSON was added in commits 0457d07..b174257 -- Amit] Signed-off-by: Markus Armbruster Reviewed-by: Eric Blake Reviewed-by: Dr. David Alan Gilbert Message-Id: <1462380558-2030-2-git-send-email-armbru@redhat.com> Signed-off-by: Amit Shah --- Makefile.objs | 1 - include/{ => migration}/qjson.h | 0 include/migration/vmstate.h | 2 +- migration/Makefile.objs | 1 + qjson.c => migration/qjson.c | 23 +++++++++++++++++------ migration/vmstate.c | 1 - tests/Makefile | 2 +- 7 files changed, 20 insertions(+), 10 deletions(-) rename include/{ => migration}/qjson.h (100%) rename qjson.c => migration/qjson.c (83%) diff --git a/Makefile.objs b/Makefile.objs index 8f705f6202..da49b7159f 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -52,7 +52,6 @@ common-obj-$(CONFIG_LINUX) += fsdev/ common-obj-y += migration/ common-obj-y += qemu-char.o #aio.o common-obj-y += page_cache.o -common-obj-y += qjson.o common-obj-$(CONFIG_SPICE) += spice-qemu-char.o diff --git a/include/qjson.h b/include/migration/qjson.h similarity index 100% rename from include/qjson.h rename to include/migration/qjson.h diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index 84ee355ceb..30ecc441de 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -29,7 +29,7 @@ #ifndef CONFIG_USER_ONLY #include #endif -#include +#include "migration/qjson.h" typedef void SaveStateHandler(QEMUFile *f, void *opaque); typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id); diff --git a/migration/Makefile.objs b/migration/Makefile.objs index 0cac6d707a..d25ff483eb 100644 --- a/migration/Makefile.objs +++ b/migration/Makefile.objs @@ -2,6 +2,7 @@ common-obj-y += migration.o tcp.o common-obj-y += vmstate.o common-obj-y += qemu-file.o qemu-file-buf.o qemu-file-unix.o qemu-file-stdio.o common-obj-y += xbzrle.o postcopy-ram.o +common-obj-y += qjson.o common-obj-$(CONFIG_RDMA) += rdma.o common-obj-$(CONFIG_POSIX) += exec.o unix.o fd.o diff --git a/qjson.c b/migration/qjson.c similarity index 83% rename from qjson.c rename to migration/qjson.c index b65ca6ee5e..cb479fe0eb 100644 --- a/qjson.c +++ b/migration/qjson.c @@ -1,5 +1,5 @@ /* - * QEMU JSON writer + * A simple JSON writer * * Copyright Alexander Graf * @@ -11,12 +11,23 @@ * */ +/* + * Type QJSON lets you build JSON text. Its interface mirrors (a + * subset of) abstract JSON syntax. + * + * It does *not* detect incorrect use. It happily produces invalid + * JSON then. This is what migration wants. + * + * QAPI output visitors also produce JSON text. However, they do + * assert their preconditions and invariants, and therefore abort on + * incorrect use. + */ + #include "qemu/osdep.h" -#include -#include -#include -#include -#include +#include "qapi/qmp/qstring.h" +#include "migration/qjson.h" +#include "qemu/module.h" +#include "qom/object.h" struct QJSON { Object obj; diff --git a/migration/vmstate.c b/migration/vmstate.c index bf3d5db301..46dc55ea40 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -6,7 +6,6 @@ #include "qemu/bitops.h" #include "qemu/error-report.h" #include "trace.h" -#include "qjson.h" static void vmstate_subsection_save(QEMUFile *f, const VMStateDescription *vmsd, void *opaque, QJSON *vmdesc); diff --git a/tests/Makefile b/tests/Makefile index 9dddde6589..1bbd1ca463 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -439,7 +439,7 @@ tests/test-qdev-global-props$(EXESUF): tests/test-qdev-global-props.o \ $(test-qapi-obj-y) tests/test-vmstate$(EXESUF): tests/test-vmstate.o \ migration/vmstate.o migration/qemu-file.o migration/qemu-file-buf.o \ - migration/qemu-file-unix.o qjson.o \ + migration/qemu-file-unix.o migration/qjson.o \ $(test-qom-obj-y) tests/test-timed-average$(EXESUF): tests/test-timed-average.o qemu-timer.o \ $(test-util-obj-y)