From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:48307) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sbi8h-0001KL-Md for qemu-devel@nongnu.org; Mon, 04 Jun 2012 21:00:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sbi8d-0002rb-Ql for qemu-devel@nongnu.org; Mon, 04 Jun 2012 21:00:50 -0400 Received: from mail-pz0-f45.google.com ([209.85.210.45]:34174) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sbi8d-0002oi-7e for qemu-devel@nongnu.org; Mon, 04 Jun 2012 21:00:47 -0400 Received: by mail-pz0-f45.google.com with SMTP id v2so7118187dad.4 for ; Mon, 04 Jun 2012 18:00:46 -0700 (PDT) Sender: fluxion From: Michael Roth Date: Mon, 4 Jun 2012 20:00:08 -0500 Message-Id: <1338858018-17189-8-git-send-email-mdroth@linux.vnet.ibm.com> In-Reply-To: <1338858018-17189-1-git-send-email-mdroth@linux.vnet.ibm.com> References: <1338858018-17189-1-git-send-email-mdroth@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH 07/17] qapi: add open-coded visitors for QEMUTimer/struct tm types List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: aliguori@us.ibm.com, quintela@redhat.com, owasserm@redhat.com, yamahata@valinux.co.jp, pbonzini@redhat.com, akong@redhat.com, afaerber@suse.de These are common types that don't lend themselves to script-generated visitors and require special handling. These will be useful for device state serialization. Signed-off-by: Michael Roth --- qapi/misc-qapi-visit.c | 35 +++++++++++++++++++++++++++++++++++ qapi/qc.h | 7 +++++++ 2 files changed, 42 insertions(+), 0 deletions(-) create mode 100644 qapi/misc-qapi-visit.c diff --git a/qapi/misc-qapi-visit.c b/qapi/misc-qapi-visit.c new file mode 100644 index 0000000..fedc063 --- /dev/null +++ b/qapi/misc-qapi-visit.c @@ -0,0 +1,35 @@ +#include +#include "qapi-visit-core.h" +#include "qc.h" +#include "qemu-timer.h" + +void visit_type_tm(Visitor *v, struct tm *obj, const char *name, Error **errp) +{ + visit_start_struct(v, NULL, "struct tm", name, 0, errp); + visit_type_int32(v, &obj->tm_year, "tm_year", errp); + visit_type_int32(v, &obj->tm_mon, "tm_mon", errp); + visit_type_int32(v, &obj->tm_mday, "tm_mday", errp); + visit_type_int32(v, &obj->tm_hour, "tm_hour", errp); + visit_type_int32(v, &obj->tm_min, "tm_min", errp); + visit_type_int32(v, &obj->tm_sec, "tm_sec", errp); + visit_end_struct(v, errp); +} + +void visit_type_QEMUTimer(Visitor *v, QEMUTimer **obj, const char *name, + Error **errp) +{ + int64_t expire_time, expire_time_cpy; + expire_time = expire_time_cpy = qemu_timer_expire_time_ns(*obj); + visit_start_struct(v, NULL, "QEMUTimer", name, 0, errp); + visit_type_int64(v, &expire_time, "expire_time", errp); + visit_end_struct(v, errp); + + /* if we're modifying a QEMUTimer, re-arm/delete accordingly */ + if (expire_time != expire_time_cpy) { + if (expire_time != -1) { + qemu_mod_timer_ns(*obj, expire_time); + } else { + qemu_del_timer(*obj); + } + } +} diff --git a/qapi/qc.h b/qapi/qc.h index 3b3a8b9..cf12c07 100644 --- a/qapi/qc.h +++ b/qapi/qc.h @@ -1,6 +1,8 @@ #ifndef QC_H #define QC_H +#include "qemu-timer.h" + #define qc_declaration #define _immutable #define _derived @@ -8,4 +10,9 @@ #define _version(x) #define _size_is(x) +/* misc. visitors */ +void visit_type_tm(Visitor *m, struct tm *obj, const char *name, Error **errp); +void visit_type_QEMUTimer(Visitor *v, QEMUTimer **obj, const char *name, + Error **errp); + #endif -- 1.7.4.1