[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 16 of 22] xenpaging: move num_pages into xenpaging struct
# HG changeset patch # User Olaf Hering <olaf@xxxxxxxxx> # Date 1307695642 -7200 # Node ID 6fafd6e85a20f667c9546d76569049d411b96fb1 # Parent 8913a5fda8d0b3739af4265bc363b02745fa7d01 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 8913a5fda8d0 -r 6fafd6e85a20 tools/xenpaging/xenpaging.c --- a/tools/xenpaging/xenpaging.c Fri Jun 10 10:47:20 2011 +0200 +++ b/tools/xenpaging/xenpaging.c Fri Jun 10 10:47:22 2011 +0200 @@ -128,7 +128,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; @@ -256,6 +256,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 ) @@ -552,7 +559,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; @@ -572,10 +578,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"); @@ -583,7 +587,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); @@ -594,12 +598,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; @@ -611,8 +610,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 ) @@ -648,13 +646,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 8913a5fda8d0 -r 6fafd6e85a20 tools/xenpaging/xenpaging.h --- a/tools/xenpaging/xenpaging.h Fri Jun 10 10:47:20 2011 +0200 +++ b/tools/xenpaging/xenpaging.h Fri Jun 10 10:47:22 2011 +0200 @@ -42,6 +42,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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |