From patchwork Thu Nov 1 13:04:03 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Roth X-Patchwork-Id: 196223 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id A88212C0180 for ; Fri, 2 Nov 2012 01:17:58 +1100 (EST) Received: from localhost ([::1]:55258 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TTuU2-0006Y9-E4 for incoming@patchwork.ozlabs.org; Thu, 01 Nov 2012 09:06:54 -0400 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) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=bzg4g4jeXgavLw8bOEsLxUswK8jsDAXNKCmnxtyRtqg=; b=VZ6KPjPeCtW5oZ/oebkUaR5cTTJgNJ3FQP4yC315ILmKh/zvr38j0q1PoF3I8XylN0 amTrNJ3EXuGrc0j0PezvMa1vxgX03edCbFcByvo5lxrCEViJyGFG7spIQ/Wn13Ww75nJ s6qyGK9Nod07v8XNLCwLRccT05REkTfy1hfogmhyOiSDrqbYJVcKNj5GnLqqcJ3xWp8C KZAggCxvaiz3jDM4ZIqO0uvb3d8xEESMtlLzMWcajEfVdgw5Bqq3lDmlu299K5AbiedJ i6xerrFH2+xBzW8Y/ANII2yJAuQmjEQDZspzbXdGJf0l+fhDHKf2dYUvPyq6TFtqw/OS VfCw== Received: by 10.42.110.130 with SMTP id q2mr34441674icp.53.1351775089474; Thu, 01 Nov 2012 06:04:49 -0700 (PDT) Received: from loki.morrigu.org (cpe-72-179-62-111.austin.res.rr.com. [72.179.62.111]) by mx.google.com with ESMTPS id dq9sm5734584igc.5.2012.11.01.06.04.48 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 01 Nov 2012 06:04:48 -0700 (PDT) From: Michael Roth To: qemu-devel@nongnu.org Date: Thu, 1 Nov 2012 08:04:03 -0500 Message-Id: <1351775071-7644-2-git-send-email-mdroth@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.9.5 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> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 209.85.223.173 Cc: kwolf@redhat.com, peter.maydell@linaro.org, aliguori@us.ibm.com, quintela@redhat.com, blauwirbel@gmail.com, pbonzini@redhat.com Subject: [Qemu-devel] [PATCH 01/29] qemu-timer: add QEMUTimer visitor X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 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) {