Statistics
| Branch: | Revision:

root / dma.h @ bbca72c6

History | View | Annotate | Download (1.5 kB)

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
struct QEMUSGList {
24
    ScatterGatherEntry *sg;
25
    int nsg;
26
    int nalloc;
27
    target_phys_addr_t size;
28
};
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
typedef BlockDriverAIOCB *DMAIOFunc(BlockDriverState *bs, int64_t sector_num,
36
                                 QEMUIOVector *iov, int nb_sectors,
37
                                 BlockDriverCompletionFunc *cb, void *opaque);
38

    
39
BlockDriverAIOCB *dma_bdrv_io(BlockDriverState *bs,
40
                              QEMUSGList *sg, uint64_t sector_num,
41
                              DMAIOFunc *io_func, BlockDriverCompletionFunc *cb,
42
                              void *opaque, bool to_dev);
43
BlockDriverAIOCB *dma_bdrv_read(BlockDriverState *bs,
44
                                QEMUSGList *sg, uint64_t sector,
45
                                BlockDriverCompletionFunc *cb, void *opaque);
46
BlockDriverAIOCB *dma_bdrv_write(BlockDriverState *bs,
47
                                 QEMUSGList *sg, uint64_t sector,
48
                                 BlockDriverCompletionFunc *cb, void *opaque);
49
#endif