[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH v5 02/12] fdc: reduce number of pick_geometry argume
From: |
John Snow |
Subject: |
[Qemu-block] [PATCH v5 02/12] fdc: reduce number of pick_geometry arguments |
Date: |
Fri, 22 Jan 2016 15:50:55 -0500 |
Modify this function to operate directly on FDrive objects instead of
unpacking and passing all of those parameters manually. Reduces the
complexity in the caller and reduces the number of args to just one.
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: John Snow <address@hidden>
---
hw/block/fdc.c | 50 ++++++++++++++++++++------------------------------
1 file changed, 20 insertions(+), 30 deletions(-)
diff --git a/hw/block/fdc.c b/hw/block/fdc.c
index 71d931e..5505219 100644
--- a/hw/block/fdc.c
+++ b/hw/block/fdc.c
@@ -242,11 +242,9 @@ static void fd_recalibrate(FDrive *drv)
fd_seek(drv, 0, 0, 1, 1);
}
-static void pick_geometry(BlockBackend *blk, int *nb_heads,
- int *max_track, int *last_sect,
- FDriveType drive_in, FDriveType *drive,
- FDriveRate *rate)
+static void pick_geometry(FDrive *drv)
{
+ BlockBackend *blk = drv->blk;
const FDFormat *parse;
uint64_t nb_sectors, size;
int i, first_match, match;
@@ -259,8 +257,8 @@ static void pick_geometry(BlockBackend *blk, int *nb_heads,
if (parse->drive == FDRIVE_DRV_NONE) {
break;
}
- if (drive_in == parse->drive ||
- drive_in == FDRIVE_DRV_NONE) {
+ if (drv->drive == parse->drive ||
+ drv->drive == FDRIVE_DRV_NONE) {
size = (parse->max_head + 1) * parse->max_track *
parse->last_sect;
if (nb_sectors == size) {
@@ -280,41 +278,33 @@ static void pick_geometry(BlockBackend *blk, int
*nb_heads,
}
parse = &fd_formats[match];
}
- *nb_heads = parse->max_head + 1;
- *max_track = parse->max_track;
- *last_sect = parse->last_sect;
- *drive = parse->drive;
- *rate = parse->rate;
+
+ if (parse->max_head == 0) {
+ drv->flags &= ~FDISK_DBL_SIDES;
+ } else {
+ drv->flags |= FDISK_DBL_SIDES;
+ }
+ drv->max_track = parse->max_track;
+ drv->last_sect = parse->last_sect;
+ drv->drive = parse->drive;
+ drv->media_rate = parse->rate;
}
/* Revalidate a disk drive after a disk change */
static void fd_revalidate(FDrive *drv)
{
- int nb_heads, max_track, last_sect, ro;
- FDriveType drive;
- FDriveRate rate;
-
FLOPPY_DPRINTF("revalidate\n");
if (drv->blk != NULL) {
- ro = blk_is_read_only(drv->blk);
- pick_geometry(drv->blk, &nb_heads, &max_track,
- &last_sect, drv->drive, &drive, &rate);
+ drv->ro = blk_is_read_only(drv->blk);
+ pick_geometry(drv);
if (!drv->media_inserted) {
FLOPPY_DPRINTF("No disk in drive\n");
} else {
- FLOPPY_DPRINTF("Floppy disk (%d h %d t %d s) %s\n", nb_heads,
- max_track, last_sect, ro ? "ro" : "rw");
+ FLOPPY_DPRINTF("Floppy disk (%d h %d t %d s) %s\n",
+ (drv->flags & FDISK_DBL_SIDES) ? 2 : 1,
+ drv->max_track, drv->last_sect,
+ drv->ro ? "ro" : "rw");
}
- if (nb_heads == 1) {
- drv->flags &= ~FDISK_DBL_SIDES;
- } else {
- drv->flags |= FDISK_DBL_SIDES;
- }
- drv->max_track = max_track;
- drv->last_sect = last_sect;
- drv->ro = ro;
- drv->drive = drive;
- drv->media_rate = rate;
} else {
FLOPPY_DPRINTF("No drive connected\n");
drv->last_sect = 0;
--
2.4.3
- [Qemu-block] [PATCH v5 00/12] fdc: fix 2.88mb floppy diskette support, John Snow, 2016/01/22
- [Qemu-block] [PATCH v5 02/12] fdc: reduce number of pick_geometry arguments,
John Snow <=
- [Qemu-block] [PATCH v5 04/12] fdc: add disk field, John Snow, 2016/01/22
- [Qemu-block] [PATCH v5 05/12] fdc: Throw an assertion on misconfigured fd_formats table, John Snow, 2016/01/22
- [Qemu-block] [PATCH v5 03/12] fdc: add drive type qapi enum, John Snow, 2016/01/22
- [Qemu-block] [PATCH v5 01/12] fdc: move pick_geometry, John Snow, 2016/01/22
- [Qemu-block] [PATCH v5 06/12] fdc: add pick_drive, John Snow, 2016/01/22
- [Qemu-block] [PATCH v5 07/12] fdc: Add fallback option, John Snow, 2016/01/22
- [Qemu-block] [PATCH v5 11/12] qtest/fdc: Support for 2.88MB drives, John Snow, 2016/01/22
- [Qemu-block] [PATCH v5 08/12] fdc: add drive type option, John Snow, 2016/01/22
- [Qemu-block] [PATCH v5 09/12] fdc: add physical disk sizes, John Snow, 2016/01/22
- [Qemu-block] [PATCH v5 10/12] fdc: rework pick_geometry, John Snow, 2016/01/22