Annotation of qemu/dma.h, revision 1.1.1.5

1.1       root        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>
1.1.1.3   root       14: //#include "cpu.h"
                     15: #include "hw/hw.h"
1.1       root       16: #include "block.h"
                     17: 
1.1.1.5 ! root       18: typedef struct ScatterGatherEntry ScatterGatherEntry;
1.1       root       19: 
1.1.1.5 ! root       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 {
1.1       root       36:     ScatterGatherEntry *sg;
                     37:     int nsg;
                     38:     int nalloc;
1.1.1.5 ! root       39:     dma_addr_t size;
        !            40: };
1.1       root       41: 
                     42: void qemu_sglist_init(QEMUSGList *qsg, int alloc_hint);
1.1.1.5 ! root       43: void qemu_sglist_add(QEMUSGList *qsg, dma_addr_t base, dma_addr_t len);
1.1       root       44: void qemu_sglist_destroy(QEMUSGList *qsg);
1.1.1.5 ! root       45: #endif
1.1       root       46: 
1.1.1.4   root       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,
1.1.1.5 ! root       54:                               void *opaque, bool to_dev);
1.1       root       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