Home | History | Annotate | Download | only in qemu
      1 /*
      2  * DMA helper functions
      3  *
      4  * Copyright (c) 2009 Red Hat
      5  *
      6  * This work is licensed under the terms of the GNU General Public License
      7  * (GNU GPL), version 2 or later.
      8  */
      9 
     10 #ifndef DMA_H
     11 #define DMA_H
     12 
     13 #include <stdio.h>
     14 //#include "cpu.h"
     15 #include "hw/hw.h"
     16 #include "block.h"
     17 
     18 typedef struct {
     19     target_phys_addr_t base;
     20     target_phys_addr_t len;
     21 } ScatterGatherEntry;
     22 
     23 typedef struct {
     24     ScatterGatherEntry *sg;
     25     int nsg;
     26     int nalloc;
     27     target_phys_addr_t size;
     28 } QEMUSGList;
     29 
     30 void qemu_sglist_init(QEMUSGList *qsg, int alloc_hint);
     31 void qemu_sglist_add(QEMUSGList *qsg, target_phys_addr_t base,
     32                      target_phys_addr_t len);
     33 void qemu_sglist_destroy(QEMUSGList *qsg);
     34 
     35 BlockDriverAIOCB *dma_bdrv_read(BlockDriverState *bs,
     36                                 QEMUSGList *sg, uint64_t sector,
     37                                 BlockDriverCompletionFunc *cb, void *opaque);
     38 BlockDriverAIOCB *dma_bdrv_write(BlockDriverState *bs,
     39                                  QEMUSGList *sg, uint64_t sector,
     40                                  BlockDriverCompletionFunc *cb, void *opaque);
     41 #endif
     42