File:  [Qemu by Fabrice Bellard] / qemu / dma.h
Revision 1.1.1.5 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 19:17:11 2018 UTC (2 years, 6 months ago) by root
Branches: qemu, MAIN
CVS tags: qemu1001, HEAD
qemu 1.0.1

    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 ScatterGatherEntry ScatterGatherEntry;
   19: 
   20: #if defined(TARGET_PHYS_ADDR_BITS)
   21: typedef target_phys_addr_t dma_addr_t;
   22: 
   23: #define DMA_ADDR_FMT TARGET_FMT_plx
   24: 
   25: typedef enum {
   26:     DMA_DIRECTION_TO_DEVICE = 0,
   27:     DMA_DIRECTION_FROM_DEVICE = 1,
   28: } DMADirection;
   29: 
   30: struct ScatterGatherEntry {
   31:     dma_addr_t base;
   32:     dma_addr_t len;
   33: };
   34: 
   35: struct QEMUSGList {
   36:     ScatterGatherEntry *sg;
   37:     int nsg;
   38:     int nalloc;
   39:     dma_addr_t size;
   40: };
   41: 
   42: void qemu_sglist_init(QEMUSGList *qsg, int alloc_hint);
   43: void qemu_sglist_add(QEMUSGList *qsg, dma_addr_t base, dma_addr_t len);
   44: void qemu_sglist_destroy(QEMUSGList *qsg);
   45: #endif
   46: 
   47: typedef BlockDriverAIOCB *DMAIOFunc(BlockDriverState *bs, int64_t sector_num,
   48:                                  QEMUIOVector *iov, int nb_sectors,
   49:                                  BlockDriverCompletionFunc *cb, void *opaque);
   50: 
   51: BlockDriverAIOCB *dma_bdrv_io(BlockDriverState *bs,
   52:                               QEMUSGList *sg, uint64_t sector_num,
   53:                               DMAIOFunc *io_func, BlockDriverCompletionFunc *cb,
   54:                               void *opaque, bool to_dev);
   55: BlockDriverAIOCB *dma_bdrv_read(BlockDriverState *bs,
   56:                                 QEMUSGList *sg, uint64_t sector,
   57:                                 BlockDriverCompletionFunc *cb, void *opaque);
   58: BlockDriverAIOCB *dma_bdrv_write(BlockDriverState *bs,
   59:                                  QEMUSGList *sg, uint64_t sector,
   60:                                  BlockDriverCompletionFunc *cb, void *opaque);
   61: #endif

unix.superglobalmegacorp.com