void ide_init_drive(IDEState *s, DriveInfo *dinfo,

                    const char *version, const char *serial)

{

    int cylinders, heads, secs;

    uint64_t nb_sectors;



    s->bs = dinfo->bdrv;

    bdrv_get_geometry(s->bs, &nb_sectors);

    bdrv_guess_geometry(s->bs, &cylinders, &heads, &secs);

    s->cylinders = cylinders;

    s->heads = heads;

    s->sectors = secs;

    s->nb_sectors = nb_sectors;

    /* The SMART values should be preserved across power cycles

       but they aren't.  */

    s->smart_enabled = 1;

    s->smart_autosave = 1;

    s->smart_errors = 0;

    s->smart_selftest_count = 0;

    if (bdrv_get_type_hint(s->bs) == BDRV_TYPE_CDROM) {

        s->is_cdrom = 1;

        bdrv_set_change_cb(s->bs, cdrom_change_cb, s);

    }

    if (serial && *serial) {

        strncpy(s->drive_serial_str, serial, sizeof(s->drive_serial_str));

    } else {

        snprintf(s->drive_serial_str, sizeof(s->drive_serial_str),

                 "QM%05d", s->drive_serial);

    }

    if (version) {

        pstrcpy(s->version, sizeof(s->version), version);

    } else {

        pstrcpy(s->version, sizeof(s->version), QEMU_VERSION);

    }

    ide_reset(s);

}

void ide_init_drive(IDEState *s, DriveInfo *dinfo,

                    const char *version, const char *serial)

{

    int cylinders, heads, secs;

    uint64_t nb_sectors;



    s->bs = dinfo->bdrv;

    bdrv_get_geometry(s->bs, &nb_sectors);

    bdrv_guess_geometry(s->bs, &cylinders, &heads, &secs);

    s->cylinders = cylinders;

    s->heads = heads;

    s->sectors = secs;

    s->nb_sectors = nb_sectors;

    



    s->smart_enabled = 1;

    s->smart_autosave = 1;

    s->smart_errors = 0;

    s->smart_selftest_count = 0;

    if (bdrv_get_type_hint(s->bs) == BDRV_TYPE_CDROM) {

        s->is_cdrom = 1;

        bdrv_set_change_cb(s->bs, cdrom_change_cb, s);

    }

    if (serial && *serial) {

        strncpy(s->drive_serial_str, serial, sizeof(s->drive_serial_str));

    } else {

        snprintf(s->drive_serial_str, sizeof(s->drive_serial_str),

                 "QM%05d", s->drive_serial);

    }

    if (version) {

        pstrcpy(s->version, sizeof(s->version), version);

    } else {

        pstrcpy(s->version, sizeof(s->version), QEMU_VERSION);

    }

    ide_reset(s);

}

void FUNC_0(IDEState *VAR_0, DriveInfo *VAR_1,

                    const char *VAR_2, const char *VAR_3)

{

    int VAR_4, VAR_5, VAR_6;

    uint64_t nb_sectors;



    VAR_0->bs = VAR_1->bdrv;

    bdrv_get_geometry(VAR_0->bs, &nb_sectors);

    bdrv_guess_geometry(VAR_0->bs, &VAR_4, &VAR_5, &VAR_6);

    VAR_0->VAR_4 = VAR_4;

    VAR_0->VAR_5 = VAR_5;

    VAR_0->sectors = VAR_6;

    VAR_0->nb_sectors = nb_sectors;

    



    VAR_0->smart_enabled = 1;

    VAR_0->smart_autosave = 1;

    VAR_0->smart_errors = 0;

    VAR_0->smart_selftest_count = 0;

    if (bdrv_get_type_hint(VAR_0->bs) == BDRV_TYPE_CDROM) {

        VAR_0->is_cdrom = 1;

        bdrv_set_change_cb(VAR_0->bs, cdrom_change_cb, VAR_0);

    }

    if (VAR_3 && *VAR_3) {

        strncpy(VAR_0->drive_serial_str, VAR_3, sizeof(VAR_0->drive_serial_str));

    } else {

        snprintf(VAR_0->drive_serial_str, sizeof(VAR_0->drive_serial_str),

                 "QM%05d", VAR_0->drive_serial);

    }

    if (VAR_2) {

        pstrcpy(VAR_0->VAR_2, sizeof(VAR_0->VAR_2), VAR_2);

    } else {

        pstrcpy(VAR_0->VAR_2, sizeof(VAR_0->VAR_2), QEMU_VERSION);

    }

    ide_reset(VAR_0);

}

void FUNC_0(IDEState *VAR_0, DriveInfo *VAR_1,
const char *VAR_2, const char *VAR_3)
{ int VAR_4, VAR_5, VAR_6; uint64_t nb_sectors; VAR_0->bs = VAR_1->bdrv; bdrv_get_geometry(VAR_0->bs, &nb_sectors); bdrv_guess_geometry(VAR_0->bs, &VAR_4, &VAR_5, &VAR_6); VAR_0->VAR_4 = VAR_4; VAR_0->VAR_5 = VAR_5; VAR_0->sectors = VAR_6; VAR_0->nb_sectors = nb_sectors; VAR_0->smart_enabled = 1; VAR_0->smart_autosave = 1; VAR_0->smart_errors = 0; VAR_0->smart_selftest_count = 0; if (bdrv_get_type_hint(VAR_0->bs) == BDRV_TYPE_CDROM) { VAR_0->is_cdrom = 1; bdrv_set_change_cb(VAR_0->bs, cdrom_change_cb, VAR_0); } if (VAR_3 && *VAR_3) { strncpy(VAR_0->drive_serial_str, VAR_3, sizeof(VAR_0->drive_serial_str)); } else { snprintf(VAR_0->drive_serial_str, sizeof(VAR_0->drive_serial_str),
"QM%05d", VAR_0->drive_serial); } if (VAR_2) { pstrcpy(VAR_0->VAR_2, sizeof(VAR_0->VAR_2), VAR_2); } else { pstrcpy(VAR_0->VAR_2, sizeof(VAR_0->VAR_2), QEMU_VERSION); } ide_reset(VAR_0); }