@@ -27,6 +27,7 @@
#include "qapi/opts-visitor.h"
#include "qapi/dealloc-visitor.h"
#include "qapi-visit.h"
+#include "qemu-options.h"
struct acpi_table_header {
uint16_t _length; /* our length, not actual part of the hdr */
@@ -64,6 +65,7 @@ static QemuOptsList qemu_acpi_opts = {
static void acpi_register_config(void)
{
qemu_add_opts(&qemu_acpi_opts);
+ qemu_set_opt_index(qemu_acpi_opts.name, QEMU_OPTION_acpitable, NULL);
}
machine_init(acpi_register_config);
@@ -134,6 +134,9 @@ void qerror_report_err(Error *err);
#define QERR_INVALID_OPTION_GROUP \
ERROR_CLASS_GENERIC_ERROR, "There is no option group '%s'"
+#define QERR_INVALID_OPTION_INDEX \
+ ERROR_CLASS_GENERIC_ERROR, "There is no option index '%d'"
+
#define QERR_INVALID_PARAMETER \
ERROR_CLASS_GENERIC_ERROR, "Invalid parameter '%s'"
@@ -8,6 +8,7 @@
QemuOptsList *qemu_find_opts(const char *group);
QemuOptsList *qemu_find_opts_err(const char *group, Error **errp);
+void qemu_set_opt_index(const char *group, int index, Error **errp);
void qemu_add_opts(QemuOptsList *list);
void qemu_add_drive_opts(QemuOptsList *list);
int qemu_set_option(const char *str);
@@ -103,6 +103,7 @@ typedef struct QemuOptDesc {
struct QemuOptsList {
const char *name;
+ int alias_index;
const char *implied_opt_name;
bool merge_lists; /* Merge multiple uses of option into a single list? */
QTAILQ_HEAD(, QemuOpts) head;
@@ -184,6 +184,21 @@ void qemu_add_drive_opts(QemuOptsList *list)
abort();
}
+void qemu_set_opt_index(const char *group, int index, Error **errp)
+{
+ int i;
+
+ for (i = 0; vm_config_groups[i] != NULL; i++) {
+ if (strcmp(vm_config_groups[i]->name, group) == 0) {
+ vm_config_groups[i]->alias_index = index;
+ break;
+ }
+ }
+ if (vm_config_groups[i] == NULL) {
+ error_set(errp, QERR_INVALID_OPTION_GROUP, group);
+ }
+}
+
void qemu_add_opts(QemuOptsList *list)
{
int entries, i;
@@ -193,6 +208,7 @@ void qemu_add_opts(QemuOptsList *list)
for (i = 0; i < entries; i++) {
if (vm_config_groups[i] == NULL) {
vm_config_groups[i] = list;
+ list->alias_index = -1;
return;
}
}
@@ -2988,7 +2988,9 @@ int main(int argc, char **argv, char **envp)
qemu_add_opts(&qemu_option_rom_opts);
qemu_add_opts(&qemu_machine_opts);
qemu_add_opts(&qemu_smp_opts);
+ qemu_set_opt_index(qemu_smp_opts.name, QEMU_OPTION_smp, NULL);
qemu_add_opts(&qemu_boot_opts);
+ qemu_set_opt_index(qemu_boot_opts.name, QEMU_OPTION_boot, NULL);
qemu_add_opts(&qemu_sandbox_opts);
qemu_add_opts(&qemu_add_fd_opts);
qemu_add_opts(&qemu_object_opts);