From 3b0ba927931925f0f76509747ae145df30c97a05 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Wed, 22 Jul 2009 16:42:59 +0200 Subject: kill drives_opt cleanup pretty simliar to the drives_table removal patch: - drop the table and make a linked list out of it. - pass around struct pointers instead of table indices. Signed-off-by: Gerd Hoffmann Signed-off-by: Anthony Liguori --- sysemu.h | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) (limited to 'sysemu.h') diff --git a/sysemu.h b/sysemu.h index 5bd4214..ec55877 100644 --- a/sysemu.h +++ b/sysemu.h @@ -159,6 +159,12 @@ typedef enum { #define BLOCK_SERIAL_STRLEN 20 +typedef struct DriveOpt { + const char *file; + char opt[1024]; + TAILQ_ENTRY(DriveOpt) next; +} DriveOpt; + typedef struct DriveInfo { BlockDriverState *bdrv; char *id; @@ -166,7 +172,7 @@ typedef struct DriveInfo { BlockInterfaceType type; int bus; int unit; - int drive_opt_idx; + DriveOpt *opt; BlockInterfaceErrorAction onerror; char serial[BLOCK_SERIAL_STRLEN + 1]; TAILQ_ENTRY(DriveInfo) next; @@ -177,28 +183,20 @@ typedef struct DriveInfo { #define MAX_DRIVES 32 extern TAILQ_HEAD(drivelist, DriveInfo) drives; +extern TAILQ_HEAD(driveoptlist, DriveOpt) driveopts; extern DriveInfo *drive_get(BlockInterfaceType type, int bus, int unit); extern DriveInfo *drive_get_by_id(char *id); extern int drive_get_max_bus(BlockInterfaceType type); extern void drive_uninit(BlockDriverState *bdrv); -extern void drive_remove(int index); +extern void drive_remove(DriveOpt *opt); extern const char *drive_get_serial(BlockDriverState *bdrv); extern BlockInterfaceErrorAction drive_get_onerror(BlockDriverState *bdrv); BlockDriverState *qdev_init_bdrv(DeviceState *dev, BlockInterfaceType type); -struct drive_opt { - const char *file; - char opt[1024]; - int used; -}; - -extern struct drive_opt drives_opt[MAX_DRIVES]; -extern int nb_drives_opt; - -extern int drive_add(const char *file, const char *fmt, ...); -extern DriveInfo *drive_init(struct drive_opt *arg, int snapshot, void *machine, +extern DriveOpt *drive_add(const char *file, const char *fmt, ...); +extern DriveInfo *drive_init(DriveOpt *arg, int snapshot, void *machine, int *fatal_error); /* acpi */ -- cgit v1.1