]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
* src/xen_internal.c: fix for system with page size != 4k
authorDaniel Veillard <veillard@redhat.com>
Fri, 29 Sep 2006 16:12:08 +0000 (16:12 +0000)
committerDaniel Veillard <veillard@redhat.com>
Fri, 29 Sep 2006 16:12:08 +0000 (16:12 +0000)
Daniel

ChangeLog
src/xen_internal.c

index 6293f9ffe4b2be901274e6d92f26b52ed5d13862..38a5764085033fe49c30fd6810170c91276352fb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Fri Sep 29 17:16:40 CEST 2006 Daniel Veillard <veillard@redhat.com>
+
+       * src/xen_internal.c: fix for system with page size != 4k
+
 Fri Sep 29 13:05:12 CEST 2006 Daniel Veillard <veillard@redhat.com>
 
        * docs/bugs.html docs/libvir.html: added pointers on how to report
index 37315edc8a33872c91c05b8622c058d3f9600a92..31e3e546f2e9f5e6b865b39b23117b53098ef704 100644 (file)
@@ -1489,6 +1489,13 @@ xenHypervisorGetDomInfo(virConnectPtr conn, int id, virDomainInfoPtr info)
 {
     xen_getdomaininfo dominfo;
     int ret;
+    static int kb_per_pages = 0;
+
+    if (kb_per_pages == 0) {
+        kb_per_pages = sysconf(_SC_PAGESIZE) / 1024;
+       if (kb_per_pages <= 0) 
+           kb_per_pages = 4;
+    }
 
     if ((conn == NULL) || (conn->handle < 0) || (info == NULL))
         return (-1);
@@ -1527,8 +1534,8 @@ xenHypervisorGetDomInfo(virConnectPtr conn, int id, virDomainInfoPtr info)
      * kilobytes from page counts
      */
     info->cpuTime = XEN_GETDOMAININFO_CPUTIME(dominfo);
-    info->memory = XEN_GETDOMAININFO_TOT_PAGES(dominfo) * 4;
-    info->maxMem = XEN_GETDOMAININFO_MAX_PAGES(dominfo) * 4;
+    info->memory = XEN_GETDOMAININFO_TOT_PAGES(dominfo) * kb_per_pages;
+    info->maxMem = XEN_GETDOMAININFO_MAX_PAGES(dominfo) * kb_per_pages;
     info->nrVirtCpu = XEN_GETDOMAININFO_CPUCOUNT(dominfo);
     return (0);
 }