From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=57263 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OmQ8m-0003Dr-K1 for qemu-devel@nongnu.org; Fri, 20 Aug 2010 07:52:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OmQ8k-0003eC-SD for qemu-devel@nongnu.org; Fri, 20 Aug 2010 07:52:08 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39862) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OmQ8k-0003e0-Kn for qemu-devel@nongnu.org; Fri, 20 Aug 2010 07:52:06 -0400 Received: from int-mx08.intmail.prod.int.phx2.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o7KBq5q5006533 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Fri, 20 Aug 2010 07:52:05 -0400 From: Gerd Hoffmann Date: Fri, 20 Aug 2010 13:52:00 +0200 Message-Id: <1282305122-29097-2-git-send-email-kraxel@redhat.com> In-Reply-To: <1282305122-29097-1-git-send-email-kraxel@redhat.com> References: <1282305122-29097-1-git-send-email-kraxel@redhat.com> Subject: [Qemu-devel] [PATCH 1/3] QemuOpts: allow new option groups be registered at runtime. List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Gerd Hoffmann Signed-off-by: Gerd Hoffmann --- qemu-config.c | 18 +++++++++++++++++- qemu-config.h | 1 + 2 files changed, 18 insertions(+), 1 deletions(-) diff --git a/qemu-config.c b/qemu-config.c index 95abe61..68880c2 100644 --- a/qemu-config.c +++ b/qemu-config.c @@ -342,7 +342,7 @@ QemuOptsList qemu_cpudef_opts = { }, }; -static QemuOptsList *vm_config_groups[] = { +static QemuOptsList *vm_config_groups[32] = { &qemu_drive_opts, &qemu_chardev_opts, &qemu_device_opts, @@ -374,6 +374,22 @@ QemuOptsList *qemu_find_opts(const char *group) return find_list(vm_config_groups, group); } +void qemu_add_opts(QemuOptsList *list) +{ + int entries, i; + + entries = ARRAY_SIZE(vm_config_groups); + entries--; /* keep list NULL terminated */ + for (i = 0; i < entries; i++) { + if (vm_config_groups[i] == NULL) { + vm_config_groups[i] = list; + return; + } + } + fprintf(stderr, "ran out of space in vm_config_groups"); + abort(); +} + int qemu_set_option(const char *str) { char group[64], id[64], arg[64]; diff --git a/qemu-config.h b/qemu-config.h index dca69d4..bf9bcc2 100644 --- a/qemu-config.h +++ b/qemu-config.h @@ -16,6 +16,7 @@ extern QemuOptsList qemu_mon_opts; extern QemuOptsList qemu_cpudef_opts; QemuOptsList *qemu_find_opts(const char *group); +void qemu_add_opts(QemuOptsList *list); int qemu_set_option(const char *str); int qemu_global_option(const char *str); void qemu_add_globals(void); -- 1.7.1