qemu/dma.h
<<
>>
Prefs
   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
  18typedef struct {
  19    target_phys_addr_t base;
  20    target_phys_addr_t len;
  21} ScatterGatherEntry;
  22
  23typedef struct {
  24    ScatterGatherEntry *sg;
  25    int nsg;
  26    int nalloc;
  27    target_phys_addr_t size;
  28} QEMUSGList;
  29
  30void qemu_sglist_init(QEMUSGList *qsg, int alloc_hint);
  31void qemu_sglist_add(QEMUSGList *qsg, target_phys_addr_t base,
  32                     target_phys_addr_t len);
  33void qemu_sglist_destroy(QEMUSGList *qsg);
  34
  35BlockDriverAIOCB *dma_bdrv_read(BlockDriverState *bs,
  36                                QEMUSGList *sg, uint64_t sector,
  37                                BlockDriverCompletionFunc *cb, void *opaque);
  38BlockDriverAIOCB *dma_bdrv_write(BlockDriverState *bs,
  39                                 QEMUSGList *sg, uint64_t sector,
  40                                 BlockDriverCompletionFunc *cb, void *opaque);
  41#endif
  42