| #ifndef HW_IDE_DMA_H |
| #define HW_IDE_DMA_H |
| |
| #include "block/aio.h" |
| #include "qemu/iov.h" |
| |
| typedef struct IDEState IDEState; |
| typedef struct IDEDMAOps IDEDMAOps; |
| typedef struct IDEDMA IDEDMA; |
| |
| typedef void DMAStartFunc(const IDEDMA *, IDEState *, BlockCompletionFunc *); |
| typedef void DMAVoidFunc(const IDEDMA *); |
| typedef int DMAIntFunc(const IDEDMA *, bool); |
| typedef int32_t DMAInt32Func(const IDEDMA *, int32_t len); |
| typedef void DMAu32Func(const IDEDMA *, uint32_t); |
| typedef void DMAStopFunc(const IDEDMA *, bool); |
| |
| struct IDEDMAOps { |
| DMAStartFunc *start_dma; |
| DMAVoidFunc *pio_transfer; |
| DMAInt32Func *prepare_buf; |
| DMAu32Func *commit_buf; |
| DMAIntFunc *rw_buf; |
| DMAVoidFunc *restart; |
| DMAVoidFunc *restart_dma; |
| DMAStopFunc *set_inactive; |
| DMAVoidFunc *cmd_done; |
| DMAVoidFunc *reset; |
| }; |
| |
| struct IDEDMA { |
| const IDEDMAOps *ops; |
| QEMUIOVector qiov; |
| BlockAIOCB *aiocb; |
| }; |
| |
| #endif |