Revision 43cf8ae6 dma-helpers.c

b/dma-helpers.c
41 41
    BlockDriverAIOCB *acb;
42 42
    QEMUSGList *sg;
43 43
    uint64_t sector_num;
44
    bool to_dev;
44
    DMADirection dir;
45 45
    bool in_cancel;
46 46
    int sg_cur_index;
47 47
    dma_addr_t sg_cur_byte;
......
75 75

  
76 76
    for (i = 0; i < dbs->iov.niov; ++i) {
77 77
        cpu_physical_memory_unmap(dbs->iov.iov[i].iov_base,
78
                                  dbs->iov.iov[i].iov_len, !dbs->to_dev,
78
                                  dbs->iov.iov[i].iov_len,
79
                                  dbs->dir != DMA_DIRECTION_TO_DEVICE,
79 80
                                  dbs->iov.iov[i].iov_len);
80 81
    }
81 82
    qemu_iovec_reset(&dbs->iov);
......
122 123
    while (dbs->sg_cur_index < dbs->sg->nsg) {
123 124
        cur_addr = dbs->sg->sg[dbs->sg_cur_index].base + dbs->sg_cur_byte;
124 125
        cur_len = dbs->sg->sg[dbs->sg_cur_index].len - dbs->sg_cur_byte;
125
        mem = cpu_physical_memory_map(cur_addr, &cur_len, !dbs->to_dev);
126
        mem = cpu_physical_memory_map(cur_addr, &cur_len,
127
                                      dbs->dir != DMA_DIRECTION_TO_DEVICE);
126 128
        if (!mem)
127 129
            break;
128 130
        qemu_iovec_add(&dbs->iov, mem, cur_len);
......
169 171
BlockDriverAIOCB *dma_bdrv_io(
170 172
    BlockDriverState *bs, QEMUSGList *sg, uint64_t sector_num,
171 173
    DMAIOFunc *io_func, BlockDriverCompletionFunc *cb,
172
    void *opaque, bool to_dev)
174
    void *opaque, DMADirection dir)
173 175
{
174 176
    DMAAIOCB *dbs = qemu_aio_get(&dma_aio_pool, bs, cb, opaque);
175 177

  
176
    trace_dma_bdrv_io(dbs, bs, sector_num, to_dev);
178
    trace_dma_bdrv_io(dbs, bs, sector_num, (dir == DMA_DIRECTION_TO_DEVICE));
177 179

  
178 180
    dbs->acb = NULL;
179 181
    dbs->bs = bs;
......
181 183
    dbs->sector_num = sector_num;
182 184
    dbs->sg_cur_index = 0;
183 185
    dbs->sg_cur_byte = 0;
184
    dbs->to_dev = to_dev;
186
    dbs->dir = dir;
185 187
    dbs->io_func = io_func;
186 188
    dbs->bh = NULL;
187 189
    qemu_iovec_init(&dbs->iov, sg->nsg);
......
194 196
                                QEMUSGList *sg, uint64_t sector,
195 197
                                void (*cb)(void *opaque, int ret), void *opaque)
196 198
{
197
    return dma_bdrv_io(bs, sg, sector, bdrv_aio_readv, cb, opaque, false);
199
    return dma_bdrv_io(bs, sg, sector, bdrv_aio_readv, cb, opaque,
200
                       DMA_DIRECTION_FROM_DEVICE);
198 201
}
199 202

  
200 203
BlockDriverAIOCB *dma_bdrv_write(BlockDriverState *bs,
201 204
                                 QEMUSGList *sg, uint64_t sector,
202 205
                                 void (*cb)(void *opaque, int ret), void *opaque)
203 206
{
204
    return dma_bdrv_io(bs, sg, sector, bdrv_aio_writev, cb, opaque, true);
207
    return dma_bdrv_io(bs, sg, sector, bdrv_aio_writev, cb, opaque,
208
                       DMA_DIRECTION_TO_DEVICE);
205 209
}
206 210

  
207 211

  

Also available in: Unified diff