qemu with hax to log dma reads & writes jcs.org/2018/11/12/vfio
at master 62 lines 1.9 kB view raw
1/* 2 * QEMU host block devices 3 * 4 * Copyright (c) 2003-2008 Fabrice Bellard 5 * 6 * This work is licensed under the terms of the GNU GPL, version 2 or 7 * later. See the COPYING file in the top-level directory. 8 */ 9 10#ifndef BLOCKDEV_H 11#define BLOCKDEV_H 12 13#include "block/block.h" 14#include "qemu/queue.h" 15 16void blockdev_mark_auto_del(BlockBackend *blk); 17void blockdev_auto_del(BlockBackend *blk); 18 19typedef enum { 20 IF_DEFAULT = -1, /* for use with drive_add() only */ 21 /* 22 * IF_NONE must be zero, because we want MachineClass member 23 * block_default_type to default-initialize to IF_NONE 24 */ 25 IF_NONE = 0, 26 IF_IDE, IF_SCSI, IF_FLOPPY, IF_PFLASH, IF_MTD, IF_SD, IF_VIRTIO, IF_XEN, 27 IF_COUNT 28} BlockInterfaceType; 29 30struct DriveInfo { 31 BlockInterfaceType type; 32 int bus; 33 int unit; 34 int auto_del; /* see blockdev_mark_auto_del() */ 35 bool is_default; /* Added by default_drive() ? */ 36 int media_cd; 37 QemuOpts *opts; 38 bool claimed_by_board; 39 QTAILQ_ENTRY(DriveInfo) next; 40}; 41 42DriveInfo *blk_legacy_dinfo(BlockBackend *blk); 43DriveInfo *blk_set_legacy_dinfo(BlockBackend *blk, DriveInfo *dinfo); 44BlockBackend *blk_by_legacy_dinfo(DriveInfo *dinfo); 45 46void override_max_devs(BlockInterfaceType type, int max_devs); 47 48DriveInfo *drive_get(BlockInterfaceType type, int bus, int unit); 49void drive_mark_claimed_by_board(void); 50void drive_check_orphaned(void); 51DriveInfo *drive_get_by_index(BlockInterfaceType type, int index); 52int drive_get_max_bus(BlockInterfaceType type); 53int drive_get_max_devs(BlockInterfaceType type); 54DriveInfo *drive_get_next(BlockInterfaceType type); 55 56QemuOpts *drive_def(const char *optstr); 57QemuOpts *drive_add(BlockInterfaceType type, int index, const char *file, 58 const char *optstr); 59DriveInfo *drive_new(QemuOpts *arg, BlockInterfaceType block_default_type, 60 Error **errp); 61 62#endif