|
|
1.1 ! root 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.h" ! 14: #include "qemu-queue.h" ! 15: ! 16: void blockdev_mark_auto_del(BlockDriverState *bs); ! 17: void blockdev_auto_del(BlockDriverState *bs); ! 18: ! 19: typedef enum { ! 20: IF_NONE, ! 21: IF_IDE, IF_SCSI, IF_FLOPPY, IF_PFLASH, IF_MTD, IF_SD, IF_VIRTIO, IF_XEN, ! 22: IF_COUNT ! 23: } BlockInterfaceType; ! 24: ! 25: #define BLOCK_SERIAL_STRLEN 20 ! 26: ! 27: typedef struct DriveInfo { ! 28: BlockDriverState *bdrv; ! 29: char *id; ! 30: const char *devaddr; ! 31: BlockInterfaceType type; ! 32: int bus; ! 33: int unit; ! 34: int auto_del; /* see blockdev_mark_auto_del() */ ! 35: QemuOpts *opts; ! 36: char serial[BLOCK_SERIAL_STRLEN + 1]; ! 37: QTAILQ_ENTRY(DriveInfo) next; ! 38: } DriveInfo; ! 39: ! 40: #define MAX_IDE_DEVS 2 ! 41: #define MAX_SCSI_DEVS 7 ! 42: ! 43: extern DriveInfo *drive_get(BlockInterfaceType type, int bus, int unit); ! 44: extern int drive_get_max_bus(BlockInterfaceType type); ! 45: extern void drive_uninit(DriveInfo *dinfo); ! 46: extern DriveInfo *drive_get_by_blockdev(BlockDriverState *bs); ! 47: ! 48: extern QemuOpts *drive_add(const char *file, const char *fmt, ...); ! 49: extern DriveInfo *drive_init(QemuOpts *arg, int default_to_scsi, ! 50: int *fatal_error); ! 51: ! 52: /* device-hotplug */ ! 53: ! 54: DriveInfo *add_init_drive(const char *opts); ! 55: ! 56: void do_commit(Monitor *mon, const QDict *qdict); ! 57: int do_eject(Monitor *mon, const QDict *qdict, QObject **ret_data); ! 58: int do_block_set_passwd(Monitor *mon, const QDict *qdict, QObject **ret_data); ! 59: int do_change_block(Monitor *mon, const char *device, ! 60: const char *filename, const char *fmt); ! 61: ! 62: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.