From patchwork Mon Sep 24 19:08:48 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Weil X-Patchwork-Id: 186518 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 AD1132C008E for ; Tue, 25 Sep 2012 05:09:09 +1000 (EST) Received: from localhost ([::1]:36762 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TGE1j-0005tl-Na for incoming@patchwork.ozlabs.org; Mon, 24 Sep 2012 15:09:07 -0400 Received: from eggs.gnu.org ([208.118.235.92]:33689) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TGE1X-0005tW-W3 for qemu-devel@nongnu.org; Mon, 24 Sep 2012 15:08:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TGE1X-0003rz-0t for qemu-devel@nongnu.org; Mon, 24 Sep 2012 15:08:55 -0400 Received: from v220110690675601.yourvserver.net ([78.47.199.172]:38104) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TGE1W-0003ri-QO for qemu-devel@nongnu.org; Mon, 24 Sep 2012 15:08:54 -0400 Received: from localhost (v220110690675601.yourvserver.net.local [127.0.0.1]) by v220110690675601.yourvserver.net (Postfix) with ESMTP id AC6A2728003A; Mon, 24 Sep 2012 21:08:53 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at weilnetz.de Received: from v220110690675601.yourvserver.net ([127.0.0.1]) by localhost (v220110690675601.yourvserver.net [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id HxIP+jgmmMJQ; Mon, 24 Sep 2012 21:08:53 +0200 (CEST) Received: by v220110690675601.yourvserver.net (Postfix, from userid 1000) id 51808728003B; Mon, 24 Sep 2012 21:08:53 +0200 (CEST) From: Stefan Weil To: qemu-devel@nongnu.org Date: Mon, 24 Sep 2012 21:08:48 +0200 Message-Id: <1348513730-7485-2-git-send-email-sw@weilnetz.de> X-Mailer: git-send-email 1.7.10 In-Reply-To: <1348513730-7485-1-git-send-email-sw@weilnetz.de> References: <1348513730-7485-1-git-send-email-sw@weilnetz.de> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 78.47.199.172 Cc: Stefan Weil Subject: [Qemu-devel] [PATCH 1/3] irq: Add new function qemu_init_irqs 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 It is used to avoid dynamic memory allocation for qemu_irq arrays with known size or single qemu_irq variables. Signed-off-by: Stefan Weil --- hw/irq.c | 15 +++++++++------ hw/irq.h | 4 ++++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/hw/irq.c b/hw/irq.c index d413a0b..fd284b0 100644 --- a/hw/irq.c +++ b/hw/irq.c @@ -38,14 +38,11 @@ void qemu_set_irq(qemu_irq irq, int level) irq->handler(irq->opaque, irq->n, level); } -qemu_irq *qemu_allocate_irqs(qemu_irq_handler handler, void *opaque, int n) +void qemu_init_irqs(qemu_irq_handler handler, void *opaque, + qemu_irq *s, int n) { - qemu_irq *s; - struct IRQState *p; int i; - - s = (qemu_irq *)g_malloc0(sizeof(qemu_irq) * n); - p = (struct IRQState *)g_malloc0(sizeof(struct IRQState) * n); + struct IRQState *p = g_new0(struct IRQState, n); for (i = 0; i < n; i++) { p->handler = handler; p->opaque = opaque; @@ -53,6 +50,12 @@ qemu_irq *qemu_allocate_irqs(qemu_irq_handler handler, void *opaque, int n) s[i] = p; p++; } +} + +qemu_irq *qemu_allocate_irqs(qemu_irq_handler handler, void *opaque, int n) +{ + qemu_irq *s = g_new(qemu_irq, n); + qemu_init_irqs(handler, opaque, s, n); return s; } diff --git a/hw/irq.h b/hw/irq.h index 56c55f0..368b88f 100644 --- a/hw/irq.h +++ b/hw/irq.h @@ -23,6 +23,10 @@ static inline void qemu_irq_pulse(qemu_irq irq) qemu_set_irq(irq, 0); } +/* Initialize an array of N IRQs. */ +void qemu_init_irqs(qemu_irq_handler handler, void *opaque, + qemu_irq *irqs, int n); + /* Returns an array of N IRQs. */ qemu_irq *qemu_allocate_irqs(qemu_irq_handler handler, void *opaque, int n); void qemu_free_irqs(qemu_irq *s);