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 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH 07 of 12] xenpaging: move num_pages into xenpaging st

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH 07 of 12] xenpaging: move num_pages into xenpaging struct
From: Olaf Hering <olaf@xxxxxxxxx>
Date: Tue, 07 Jun 2011 11:53:09 +0200
Delivery-date: Tue, 07 Jun 2011 03:04:06 -0700
Dkim-signature: v=1; a=rsa-sha1; c=relaxed/relaxed; t=1307440397; l=3810; s=domk; d=aepfle.de; h=To:From:Date:References:In-Reply-To:Subject: Content-Transfer-Encoding:MIME-Version:Content-Type:X-RZG-CLASS-ID: X-RZG-AUTH; bh=tOVp48Y1FFvlwtfnNQTdnU4BKhA=; b=rrnOYMt6yYEdvQYivRsWm5KFUPXGn5iZfBZ/Na0K2hidfewDtDBx6G7JX+HgIa7x3AL +0D87OvHMr7M0O6hUGFrSyTkk5/8/+lkRBBCUA1G6VPj6PhS4jqC20cOlNwcssOckL+b+ 3Y/tdpPZQEJxXnJ+bosIKkl1EKRImFZTmVg=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <patchbomb.1307440382@xxxxxxxxxxxx>
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: <patchbomb.1307440382@xxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mercurial-patchbomb/1.7.5
# HG changeset patch
# User Olaf Hering <olaf@xxxxxxxxx>
# Date 1307437216 -7200
# Node ID 5aae4431bfc0970fd48f856fc4ede547ed4860f3
# Parent  46c9f04365804c08a454b82e76119c43df4d7fa0
xenpaging: move num_pages into xenpaging struct

Move num_pages into struct xenpaging.
num_pages will be used by the policy in a subsequent patch.
Also remove a memset, the victims array is allocated with calloc.

Signed-off-by: Olaf Hering <olaf@xxxxxxxxx>

diff -r 46c9f0436580 -r 5aae4431bfc0 tools/xenpaging/xenpaging.c
--- a/tools/xenpaging/xenpaging.c       Tue Jun 07 11:00:15 2011 +0200
+++ b/tools/xenpaging/xenpaging.c       Tue Jun 07 11:00:16 2011 +0200
@@ -73,7 +73,7 @@ static void *init_page(void)
     return NULL;
 }
 
-static xenpaging_t *xenpaging_init(domid_t domain_id)
+static xenpaging_t *xenpaging_init(domid_t domain_id, int num_pages)
 {
     xenpaging_t *paging;
     xc_interface *xch;
@@ -215,6 +215,13 @@ static xenpaging_t *xenpaging_init(domid
     }
     DPRINTF("max_pages = %"PRIx64"\n", paging->domain_info->max_pages);
 
+    if ( num_pages < 0 || num_pages > paging->domain_info->max_pages )
+    {
+        num_pages = paging->domain_info->max_pages;
+        DPRINTF("setting num_pages to %d\n", num_pages);
+    }
+    paging->num_pages = num_pages;
+
     /* Initialise policy */
     rc = policy_init(paging);
     if ( rc != 0 )
@@ -515,7 +522,6 @@ static int evict_victim(xenpaging_t *pag
 int main(int argc, char *argv[])
 {
     struct sigaction act;
-    int num_pages;
     xenpaging_t *paging;
     xenpaging_victim_t *victims;
     mem_event_request_t req;
@@ -535,10 +541,8 @@ int main(int argc, char *argv[])
         return -1;
     }
 
-    num_pages = atoi(argv[2]);
-
     /* Initialise domain paging */
-    paging = xenpaging_init(atoi(argv[1]));
+    paging = xenpaging_init(atoi(argv[1]), atoi(argv[2]));
     if ( paging == NULL )
     {
         fprintf(stderr, "Error initialising paging");
@@ -546,7 +550,7 @@ int main(int argc, char *argv[])
     }
     xch = paging->xc_handle;
 
-    DPRINTF("starting %s %u %d\n", argv[0], paging->mem_event.domain_id, 
num_pages);
+    DPRINTF("starting %s %u %d\n", argv[0], paging->mem_event.domain_id, 
paging->num_pages);
 
     /* Open file */
     sprintf(filename, "page_cache_%u", paging->mem_event.domain_id);
@@ -557,12 +561,7 @@ int main(int argc, char *argv[])
         return 2;
     }
 
-    if ( num_pages < 0 || num_pages > paging->domain_info->max_pages )
-    {
-        num_pages = paging->domain_info->max_pages;
-        DPRINTF("setting num_pages to %d\n", num_pages);
-    }
-    victims = calloc(num_pages, sizeof(xenpaging_victim_t));
+    victims = calloc(paging->num_pages, sizeof(xenpaging_victim_t));
 
     /* ensure that if we get a signal, we'll do cleanup, then exit */
     act.sa_handler = close_handler;
@@ -574,8 +573,7 @@ int main(int argc, char *argv[])
     sigaction(SIGALRM, &act, NULL);
 
     /* Evict pages */
-    memset(victims, 0, sizeof(xenpaging_victim_t) * num_pages);
-    for ( i = 0; i < num_pages; i++ )
+    for ( i = 0; i < paging->num_pages; i++ )
     {
         rc = evict_victim(paging, &victims[i], fd, i);
         if ( rc == -ENOSPC )
@@ -611,13 +609,13 @@ int main(int argc, char *argv[])
             if ( test_and_clear_bit(req.gfn, paging->bitmap) )
             {
                 /* Find where in the paging file to read from */
-                for ( i = 0; i < num_pages; i++ )
+                for ( i = 0; i < paging->num_pages; i++ )
                 {
                     if ( victims[i].gfn == req.gfn )
                         break;
                 }
     
-                if ( i >= num_pages )
+                if ( i >= paging->num_pages )
                 {
                     DPRINTF("Couldn't find page %"PRIx64"\n", req.gfn);
                     goto out;
diff -r 46c9f0436580 -r 5aae4431bfc0 tools/xenpaging/xenpaging.h
--- a/tools/xenpaging/xenpaging.h       Tue Jun 07 11:00:15 2011 +0200
+++ b/tools/xenpaging/xenpaging.h       Tue Jun 07 11:00:16 2011 +0200
@@ -45,6 +45,7 @@ typedef struct xenpaging {
     unsigned long *bitmap;
 
     mem_event_t mem_event;
+    int num_pages;
     int policy_mru_size;
 } xenpaging_t;
 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>