Commit a2246552 authored by Eduardo Habkost's avatar Eduardo Habkost Committed by Paolo Bonzini
Browse files

accel: Move accel name lookup to separate function

parent e8b466ef
Loading
Loading
Loading
Loading
+33 −24
Original line number Diff line number Diff line
@@ -55,11 +55,24 @@ static AccelType accel_list[] = {
    { "qtest", "QTest", qtest_available, qtest_init_accel, &qtest_allowed },
};

/* Lookup AccelType from opt_name. Returns NULL if not found */
static AccelType *accel_find(const char *opt_name)
{
    int i;
    for (i = 0; i < ARRAY_SIZE(accel_list); i++) {
        AccelType *acc = &accel_list[i];
        if (acc->opt_name && strcmp(acc->opt_name, opt_name) == 0) {
            return acc;
        }
    }
    return NULL;
}

int configure_accelerator(MachineClass *mc)
{
    const char *p;
    char buf[10];
    int i, ret;
    int ret;
    bool accel_initialised = false;
    bool init_failed = false;
    AccelType *acc = NULL;
@@ -75,13 +88,15 @@ int configure_accelerator(MachineClass *mc)
            p++;
        }
        p = get_opt_name(buf, sizeof(buf), p, ':');
        for (i = 0; i < ARRAY_SIZE(accel_list); i++) {
            acc = &accel_list[i];
            if (strcmp(acc->opt_name, buf) == 0) {
        acc = accel_find(buf);
        if (!acc) {
            fprintf(stderr, "\"%s\" accelerator does not exist.\n", buf);
            continue;
        }
        if (!acc->available()) {
            printf("%s not supported for this target\n",
                   acc->name);
                    break;
            continue;
        }
        *(acc->allowed) = true;
        ret = acc->init(mc);
@@ -94,12 +109,6 @@ int configure_accelerator(MachineClass *mc)
        } else {
            accel_initialised = true;
        }
                break;
            }
        }
        if (i == ARRAY_SIZE(accel_list)) {
            fprintf(stderr, "\"%s\" accelerator does not exist.\n", buf);
        }
    }

    if (!accel_initialised) {