From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LUnRX-0001GD-Hm for qemu-devel@nongnu.org; Wed, 04 Feb 2009 14:29:51 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LUnRW-0001FG-5p for qemu-devel@nongnu.org; Wed, 04 Feb 2009 14:29:51 -0500 Received: from [199.232.76.173] (port=54286 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LUnRV-0001F9-WD for qemu-devel@nongnu.org; Wed, 04 Feb 2009 14:29:50 -0500 Received: from e8.ny.us.ibm.com ([32.97.182.138]:35964) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1LUnRV-0005tE-Mt for qemu-devel@nongnu.org; Wed, 04 Feb 2009 14:29:49 -0500 Received: from d01relay02.pok.ibm.com (d01relay02.pok.ibm.com [9.56.227.234]) by e8.ny.us.ibm.com (8.13.1/8.13.1) with ESMTP id n14JNBPK016442 for ; Wed, 4 Feb 2009 14:23:11 -0500 Received: from d01av01.pok.ibm.com (d01av01.pok.ibm.com [9.56.224.215]) by d01relay02.pok.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id n14JTl8F163652 for ; Wed, 4 Feb 2009 14:29:47 -0500 Received: from d01av01.pok.ibm.com (loopback [127.0.0.1]) by d01av01.pok.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id n14JTkJ0017703 for ; Wed, 4 Feb 2009 14:29:47 -0500 Message-ID: <4989EC98.1010606@us.ibm.com> Date: Wed, 04 Feb 2009 13:29:28 -0600 From: Anthony Liguori MIME-Version: 1.0 References: <1233750314-23301-1-git-send-email-avi@redhat.com> <1233750314-23301-4-git-send-email-avi@redhat.com> In-Reply-To: <1233750314-23301-4-git-send-email-avi@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH 3/4] Introduce block dma helpers Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Avi Kivity Cc: qemu-devel@nongnu.org Avi Kivity wrote: > These helpers perform read/write requests on entire scatter/gather lists, > relieving the device emulation code from mapping and unmapping physical > memory, and from looping when map resources are exhausted. > > Signed-off-by: Avi Kivity > > +BlockDriverAIOCB *dma_bdrv_read(BlockDriverState *bs, > + QEMUSGList *sg, uint64_t sector, > + void (*cb)(void *opaque, int ret), void *opaque) > +{ > + return dma_bdrv_io(bs, sg, sector, cb, opaque, 0); > +} > + > +BlockDriverAIOCB *dma_bdrv_write(BlockDriverState *bs, > + QEMUSGList *sg, uint64_t sector, > + void (*cb)(void *opaque, int ret), void *opaque) > +{ > + return dma_bdrv_io(bs, sg, sector, cb, opaque, 1); > +} > This came out really nicely. Regards, Anthony Liguori > diff --git a/dma.h b/dma.h > index 3b56fa6..5ce54fb 100644 > --- a/dma.h > +++ b/dma.h > @@ -3,6 +3,7 @@ > > #include > #include "cpu.h" > +#include "block.h" > > typedef struct { > target_phys_addr_t base; > @@ -21,4 +22,11 @@ void qemu_sglist_add(QEMUSGList *qsg, target_phys_addr_t base, > target_phys_addr_t len); > void qemu_sglist_destroy(QEMUSGList *qsg); > > +BlockDriverAIOCB *dma_bdrv_read(BlockDriverState *bs, > + QEMUSGList *sg, uint64_t sector, > + BlockDriverCompletionFunc *cb, void *opaque); > +BlockDriverAIOCB *dma_bdrv_write(BlockDriverState *bs, > + QEMUSGList *sg, uint64_t sector, > + BlockDriverCompletionFunc *cb, void *opaque); > + > #endif >