From: Olaf Hering <olaf@aepfle.de>
To: xen-devel@lists.xensource.com
Subject: [PATCH 16 of 22] xenpaging: move num_pages into xenpaging struct
Date: Fri, 10 Jun 2011 11:13:05 +0200 [thread overview]
Message-ID: <6fafd6e85a20f667c954.1307697185@probook.site> (raw)
In-Reply-To: <patchbomb.1307697169@probook.site>
# HG changeset patch
# User Olaf Hering <olaf@aepfle.de>
# 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@aepfle.de>
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;
next prev parent reply other threads:[~2011-06-10 9:13 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-10 9:12 [PATCH 00 of 22] xenpaging and libxc fixes for xen-unstable Olaf Hering
2011-06-10 9:12 ` [PATCH 01 of 22] xenpaging: remove unused spinlock in pager Olaf Hering
2011-06-21 16:24 ` Ian Jackson
2011-06-10 9:12 ` [PATCH 02 of 22] tools: merge several bitop functions into xc_bitops.h Olaf Hering
2011-06-21 16:16 ` Ian Jackson
2011-06-21 16:20 ` Olaf Hering
2011-06-21 16:25 ` Ian Jackson
2011-06-21 17:17 ` Olaf Hering
2011-06-21 17:18 ` Ian Jackson
2011-06-22 14:03 ` Ian Jackson
2011-06-10 9:12 ` [PATCH 03 of 22] xenpaging: add xs_handle to struct xenpaging Olaf Hering
2011-06-14 11:05 ` Ian Campbell
2011-06-20 9:58 ` [PATCH 03 of 22 v2] " Olaf Hering
2011-06-21 13:17 ` Ian Campbell
2011-06-21 15:33 ` [PATCH 03 of 22 v3] " Olaf Hering
2011-06-10 9:12 ` [PATCH 04 of 22] xenpaging: drop xc.c, remove ASSERT Olaf Hering
2011-06-10 9:12 ` [PATCH 05 of 22] xenpaging: drop xc.c, remove xc_platform_info_t Olaf Hering
2011-06-10 9:12 ` [PATCH 06 of 22] xenpaging: drop xc.c, remove xc_wait_for_event Olaf Hering
2011-06-10 9:12 ` [PATCH 07 of 22] xenpaging: drop xc.c, move xc_mem_paging_flush_ioemu_cache Olaf Hering
2011-06-10 9:12 ` [PATCH 08 of 22] xenpaging: drop xc.c, move xc_wait_for_event_or_timeout Olaf Hering
2011-06-10 9:12 ` [PATCH 09 of 22] xenpaging: drop xc.c, remove xc files Olaf Hering
2011-06-10 9:12 ` [PATCH 10 of 22] xenpaging: correct dropping of pages to avoid full ring buffer Olaf Hering
2011-06-10 9:13 ` [PATCH 11 of 22] xenpaging: do not bounce p2mt to xenpaging Olaf Hering
2011-06-13 10:48 ` Tim Deegan
2011-06-20 9:57 ` [PATCH 11 of 22 v2] xenpaging: do not bounce p2mt back to the hypervisor Olaf Hering
2011-06-20 10:36 ` Tim Deegan
2011-06-10 9:13 ` [PATCH 12 of 22] xenpaging: remove srand call Olaf Hering
2011-06-10 9:13 ` [PATCH 13 of 22] xenpaging: remove return values from functions that can not fail Olaf Hering
2011-06-10 9:13 ` [PATCH 14 of 22] xenpaging: catch xc_mem_paging_resume errors Olaf Hering
2011-06-10 9:13 ` [PATCH 15 of 22] xenpaging: remove local domain_id variable Olaf Hering
2011-06-10 9:13 ` Olaf Hering [this message]
2011-06-10 9:13 ` [PATCH 17 of 22] xenpaging: start paging in the middle of gfn range Olaf Hering
2011-06-10 9:13 ` [PATCH 18 of 22] xenpaging: pass integer to xenpaging_populate_page Olaf Hering
2011-06-10 9:13 ` [PATCH 19 of 22] xenpaging: add helper function for unlinking pagefile Olaf Hering
2011-06-10 9:13 ` [PATCH 20 of 22] xenpaging: add watch thread to catch guest shutdown Olaf Hering
2011-06-10 9:13 ` [PATCH 21 of 22] xenpaging: implement stopping of pager by sending SIGTERM/SIGINT Olaf Hering
2011-06-10 9:13 ` [PATCH 22 of 22] xenpaging: remove private mem_event.h Olaf Hering
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6fafd6e85a20f667c954.1307697185@probook.site \
--to=olaf@aepfle.de \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).