Statistics
| Branch: | Revision:

root / dma.h @ 59a703eb

History | View | Annotate | Download (1.1 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 "block.h"
16

    
17
typedef struct {
18
    target_phys_addr_t base;
19
    target_phys_addr_t len;
20
} ScatterGatherEntry;
21

    
22
typedef struct {
23
    ScatterGatherEntry *sg;
24
    int nsg;
25
    int nalloc;
26
    target_phys_addr_t size;
27
} QEMUSGList;
28

    
29
void qemu_sglist_init(QEMUSGList *qsg, int alloc_hint);
30
void qemu_sglist_add(QEMUSGList *qsg, target_phys_addr_t base,
31
                     target_phys_addr_t len);
32
void qemu_sglist_destroy(QEMUSGList *qsg);
33

    
34
BlockDriverAIOCB *dma_bdrv_read(BlockDriverState *bs,
35
                                QEMUSGList *sg, uint64_t sector,
36
                                BlockDriverCompletionFunc *cb, void *opaque);
37
BlockDriverAIOCB *dma_bdrv_write(BlockDriverState *bs,
38
                                 QEMUSGList *sg, uint64_t sector,
39
                                 BlockDriverCompletionFunc *cb, void *opaque);
40

    
41
#endif