WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Xen

xen-devel

[Top] [All Lists]

[Xen-devel] [PATCH 3/4] libxl: add version_info function

To: Keir Fraser <keir.fraser@xxxxxxxxxxxxx>, Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>, Ian.Jackson@xxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH 3/4] libxl: add version_info function
From: Andre Przywara <andre.przywara@xxxxxxx>
Date: 2010年4月18日 23:26:54 +0200
Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: 2010年4月18日 14:29:29 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <4BCB76FD.1020103@xxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <4BCB76FD.1020103@xxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird 2.0.0.18 (X11/20081105)
Xen provides a xen_version hypercall to query the values of several
interesting things (like hypervisor version, commandline used,
actual changeset, etc.). Create a user-friendly and efficient
wrapper around the libxc function to provide values for xl info output.
Signed-off-by: Andre Przywara <andre.przywara@xxxxxxx>
--
Andre Przywara
AMD-Operating System Research Center (OSRC), Dresden, Germany
Tel: +49 351 488-3567-12
diff -r 7ee8bb40200a tools/libxl/libxl.c
--- a/tools/libxl/libxl.c Thu Apr 15 19:11:16 2010 +0100
+++ b/tools/libxl/libxl.c Sun Apr 18 14:41:48 2010 +0200
@@ -2351,6 +2351,92 @@
 return 0;
 }
 
+int libxl_get_version_info(struct libxl_ctx *ctx,
+ libxl_version_info *info,
+ uint32_t query_mask)
+{
+ union {
+ xen_extraversion_t xen_extra;
+ xen_compile_info_t xen_cc;
+ xen_changeset_info_t xen_chgset;
+ xen_capabilities_info_t xen_caps;
+ xen_platform_parameters_t p_parms;
+ xen_commandline_t xen_commandline;
+ } u;
+ long xen_version;
+
+ if (query_mask & LIBXL_VERSION_VERSION_MASK) {
+ xen_version = xc_version(ctx->xch, XENVER_version, NULL);
+ info->xen_version_major = xen_version >> 16;
+ info->xen_version_minor = xen_version & 0xFF;
+ xc_version(ctx->xch, XENVER_extraversion, &u.xen_extra);
+ info->xen_version_extra = strdup(u.xen_extra);
+ } else {
+ info->xen_version_major = 0;
+ info->xen_version_minor = 0;
+ info->xen_version_extra = NULL;
+ }
+
+ if (query_mask & LIBXL_VERSION_COMPILER_MASK) {
+ xc_version(ctx->xch, XENVER_compile_info, &u.xen_cc);
+ info->compiler = strdup(u.xen_cc.compiler);
+ info->compile_by = strdup(u.xen_cc.compile_by);
+ info->compile_domain = strdup(u.xen_cc.compile_domain);
+ info->compile_date = strdup(u.xen_cc.compile_date);
+ } else {
+ info->compiler = NULL;
+ info->compile_by = NULL;
+ info->compile_domain = NULL;
+ info->compile_date = NULL;
+ }
+
+ if (query_mask & LIBXL_VERSION_CAPS_MASK) {
+ xc_version(ctx->xch, XENVER_capabilities, &u.xen_caps);
+ info->capabilities = strdup(u.xen_caps);
+ } else
+ info->capabilities = NULL;
+
+ if (query_mask & LIBXL_VERSION_CHANGESET_MASK) {
+ xc_version(ctx->xch, XENVER_changeset, &u.xen_chgset);
+ info->changeset = strdup(u.xen_chgset);
+ } else 
+ info->changeset = NULL;
+
+ if (query_mask & LIBXL_VERSION_VIRT_START_MASK) {
+ xc_version(ctx->xch, XENVER_platform_parameters, &u.p_parms);
+ info->virt_start = u.p_parms.virt_start;
+ } else
+ info->virt_start = 0;
+
+ if (query_mask & LIBXL_VERSION_PAGESIZE_MASK)
+ info->pagesize = xc_version(ctx->xch, XENVER_pagesize, NULL);
+ else
+ info->pagesize = 0;
+
+ if (query_mask & LIBXL_VERSION_COMMANDLINE_MASK) {
+ xc_version(ctx->xch, XENVER_commandline, &u.xen_commandline);
+ info->commandline = strdup(u.xen_commandline);
+ } else 
+ info->commandline = NULL;
+
+ return 0;
+}
+
+#define FREE_IF_NOT_ZERO(ptr) if((ptr) != NULL) {free(ptr); ptr = NULL;}
+
+void libxl_free_version_info(libxl_version_info *info)
+{
+ FREE_IF_NOT_ZERO(info->xen_version_extra)
+ FREE_IF_NOT_ZERO(info->compiler)
+ FREE_IF_NOT_ZERO(info->compile_by)
+ FREE_IF_NOT_ZERO(info->compile_domain)
+ FREE_IF_NOT_ZERO(info->compile_date)
+ FREE_IF_NOT_ZERO(info->capabilities)
+ FREE_IF_NOT_ZERO(info->changeset)
+ FREE_IF_NOT_ZERO(info->commandline)
+}
+#undef FREE_IF_NOT_ZERO
+
 struct libxl_vcpuinfo *libxl_list_vcpu(struct libxl_ctx *ctx, uint32_t domid,
 int *nb_vcpu, int *cpusize)
 {
diff -r 7ee8bb40200a tools/libxl/libxl.h
--- a/tools/libxl/libxl.h Thu Apr 15 19:11:16 2010 +0100
+++ b/tools/libxl/libxl.h Sun Apr 18 14:41:48 2010 +0200
@@ -59,6 +59,35 @@
 };
 
 typedef struct {
+ int xen_version_major;
+ int xen_version_minor;
+ char *xen_version_extra;
+ char *compiler;
+ char *compile_by;
+ char *compile_domain;
+ char *compile_date;
+ char *capabilities;
+ char *changeset;
+ unsigned long virt_start;
+ unsigned long pagesize;
+ char *commandline;
+} libxl_version_info;
+
+#define LIBXL_VERSION_VERSION_MASK (1 << 0)
+#define LIBXL_VERSION_COMPILER_MASK (1 << 1)
+#define LIBXL_VERSION_CAPS_MASK (1 << 2)
+#define LIBXL_VERSION_CHANGESET_MASK (1 << 3)
+#define LIBXL_VERSION_VIRT_START_MASK (1 << 4)
+#define LIBXL_VERSION_PAGESIZE_MASK (1 << 5)
+#define LIBXL_VERSION_COMMANDLINE_MASK (1 << 6)
+#define LIBXL_VERSION_ALL_MASK ((1 << 7) - 1)
+
+int libxl_get_version_info(struct libxl_ctx *ctx,
+ libxl_version_info *info,
+ uint32_t query_mask);
+void libxl_free_version_info(libxl_version_info *info);
+
+typedef struct {
 bool hvm;
 bool hap;
 int ssidref;
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
Previous by Date: [Xen-devel] [PATCH 2/4] libxl: add sched_get_id function , Andre Przywara
Next by Date: [Xen-devel] [PATCH 4/4] xl: add "xl info" command , Andre Przywara
Previous by Thread: Re: [Xen-devel] [PATCH 2/4] libxl: add sched_get_id function [and 1 more messages] , Ian Jackson
Next by Thread: Re: [Xen-devel] [PATCH 3/4] libxl: add version_info function , Vincent Hanquez
Indexes: [Date] [Thread] [Top] [All Lists]

Copyright ©, Citrix Systems Inc. All rights reserved. Legal and Privacy
Citrix This site is hosted by Citrix

AltStyle によって変換されたページ (->オリジナル) /