From: Gao Shiyuan <gaoshiy...@baidu.com> No remove QemuOptsList from *_config_groups, so no need to traverse from the beginning every time.
No functional changes. Signed-off-by: Gao Shiyuan <gaoshiy...@baidu.com> --- include/qemu/config-file.h | 3 +++ util/qemu-config.c | 18 ++++++++---------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/include/qemu/config-file.h b/include/qemu/config-file.h index b82a778123..223ef7bc8f 100644 --- a/include/qemu/config-file.h +++ b/include/qemu/config-file.h @@ -1,6 +1,9 @@ #ifndef QEMU_CONFIG_FILE_H #define QEMU_CONFIG_FILE_H +#define MAX_VM_CONFIG_GROUPS 48 +#define MAX_DRIVE_CONFIG_GROUPS 5 + typedef void QEMUConfigCB(const char *group, QDict *qdict, void *opaque, Error **errp); void qemu_load_module_for_opts(const char *group); diff --git a/util/qemu-config.c b/util/qemu-config.c index 42076efe1e..d7bab2047f 100644 --- a/util/qemu-config.c +++ b/util/qemu-config.c @@ -9,8 +9,8 @@ #include "qemu/config-file.h" #include "hw/boards.h" -static QemuOptsList *vm_config_groups[48]; -static QemuOptsList *drive_config_groups[5]; +static QemuOptsList *vm_config_groups[MAX_VM_CONFIG_GROUPS]; +static QemuOptsList *drive_config_groups[MAX_DRIVE_CONFIG_GROUPS]; static QemuOptsList *find_list(QemuOptsList **lists, const char *group, Error **errp) @@ -260,11 +260,10 @@ QemuOptsList *qemu_find_opts_err(const char *group, Error **errp) void qemu_add_drive_opts(QemuOptsList *list) { - int entries, i; + static int i; + static int entries = MAX_DRIVE_CONFIG_GROUPS - 1; /* keep list NULL terminated */ - entries = ARRAY_SIZE(drive_config_groups); - entries--; /* keep list NULL terminated */ - for (i = 0; i < entries; i++) { + for (; i < entries; i++) { if (drive_config_groups[i] == NULL) { drive_config_groups[i] = list; return; @@ -276,11 +275,10 @@ void qemu_add_drive_opts(QemuOptsList *list) void qemu_add_opts(QemuOptsList *list) { - int entries, i; + static int i; + static int entries = MAX_VM_CONFIG_GROUPS - 1; /* keep list NULL terminated */ - entries = ARRAY_SIZE(vm_config_groups); - entries--; /* keep list NULL terminated */ - for (i = 0; i < entries; i++) { + for (; i < entries; i++) { if (vm_config_groups[i] == NULL) { vm_config_groups[i] = list; return; -- 2.27.0