From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:59085) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TTuS6-0004Zc-CH for qemu-devel@nongnu.org; Thu, 01 Nov 2012 09:04:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TTuS2-00065D-5q for qemu-devel@nongnu.org; Thu, 01 Nov 2012 09:04:54 -0400 Received: from mail-ie0-f173.google.com ([209.85.223.173]:62691) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TTuS1-00064D-Vm for qemu-devel@nongnu.org; Thu, 01 Nov 2012 09:04:50 -0400 Received: by mail-ie0-f173.google.com with SMTP id 17so3616429iea.4 for ; Thu, 01 Nov 2012 06:04:49 -0700 (PDT) Sender: fluxion From: Michael Roth Date: Thu, 1 Nov 2012 08:04:03 -0500 Message-Id: <1351775071-7644-2-git-send-email-mdroth@linux.vnet.ibm.com> In-Reply-To: <1351775071-7644-1-git-send-email-mdroth@linux.vnet.ibm.com> References: <1351775071-7644-1-git-send-email-mdroth@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH 01/29] qemu-timer: add QEMUTimer visitor List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, peter.maydell@linaro.org, aliguori@us.ibm.com, quintela@redhat.com, blauwirbel@gmail.com, pbonzini@redhat.com We'll use this for serializing rtc and elsewhere Signed-off-by: Michael Roth --- Makefile | 3 ++- qemu-timer.c | 29 +++++++++++++++++++++++++++++ qemu-timer.h | 4 ++++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index b575361..f2d2e70 100644 --- a/Makefile +++ b/Makefile @@ -172,7 +172,8 @@ qemu-img.o: qemu-img-cmds.h tools-obj-y = $(oslib-obj-y) $(trace-obj-y) qemu-tool.o qemu-timer.o \ qemu-timer-common.o main-loop.o notify.o \ - iohandler.o cutils.o iov.o async.o error.o + iohandler.o cutils.o iov.o async.o error.o \ + $(qapi-obj-y) $(qobject-obj-y) tools-obj-$(CONFIG_POSIX) += compatfd.o qemu-img$(EXESUF): qemu-img.o $(tools-obj-y) $(block-obj-y) diff --git a/qemu-timer.c b/qemu-timer.c index ede84ff..ef2ec6a 100644 --- a/qemu-timer.c +++ b/qemu-timer.c @@ -30,6 +30,7 @@ #include "hw/hw.h" #include "qemu-timer.h" +#include "qapi/qapi-visit-core.h" #ifdef _WIN32 #include @@ -61,6 +62,34 @@ struct QEMUTimer { int scale; }; +void visit_type_QEMUTimer(Visitor *v, QEMUTimer **obj, const char *name, + Error **errp) +{ + int64_t expire_time, expire_time_cpy; + + if (error_is_set(errp)) { + return; + } + if (!obj || !*obj) { + error_set(errp, QERR_INVALID_PARAMETER_VALUE, name ? name : NULL, + "non-NULL QEMUTimer"); + return; + } + 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); + } + } +} + struct qemu_alarm_timer { char const *name; int (*start)(struct qemu_alarm_timer *t); diff --git a/qemu-timer.h b/qemu-timer.h index da7e97c..3d3d9d6 100644 --- a/qemu-timer.h +++ b/qemu-timer.h @@ -4,6 +4,7 @@ #include "qemu-common.h" #include "main-loop.h" #include "notify.h" +#include "qapi/qapi-visit-core.h" #ifdef __FreeBSD__ #include @@ -67,6 +68,9 @@ int64_t cpu_get_ticks(void); void cpu_enable_ticks(void); void cpu_disable_ticks(void); +void visit_type_QEMUTimer(Visitor *v, QEMUTimer **obj, const char *name, + Error **errp); + static inline QEMUTimer *qemu_new_timer_ns(QEMUClock *clock, QEMUTimerCB *cb, void *opaque) { -- 1.7.9.5