On 01/04/2012 03:29 AM, Orit Wasserman wrote:
On 01/03/2012 09:54 PM, Anthony Liguori wrote:
On 01/03/2012 09:34 AM, Orit Wasserman wrote:
Add page caching mechanism.
The pages are stored in the cache ordered by their address.
Signed-off-by: Orit Wasserman<owass...@redhat.com>
---
arch_init.c | 183
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 183 insertions(+), 0 deletions(-)
diff --git a/arch_init.c b/arch_init.c
index d4c92b0..fdda277 100644
--- a/arch_init.c
+++ b/arch_init.c
@@ -28,6 +28,7 @@
#include<sys/types.h>
#include<sys/mman.h>
#endif
+#include<assert.h>
#include "config.h"
#include "monitor.h"
#include "sysemu.h"
@@ -42,6 +43,14 @@
#include "gdbstub.h"
#include "hw/smbios.h"
+#ifdef DEBUG_ARCH_INIT
+#define DPRINTF(fmt, ...) \
+ do { fprintf(stdout, "arch_init: " fmt, ## __VA_ARGS__); } while (0)
+#else
+#define DPRINTF(fmt, ...) \
+ do { } while (0)
+#endif
+
#ifdef TARGET_SPARC
int graphic_width = 1024;
int graphic_height = 768;
@@ -94,6 +103,180 @@ const uint32_t arch_type = QEMU_ARCH;
#define RAM_SAVE_FLAG_EOS 0x10
#define RAM_SAVE_FLAG_CONTINUE 0x20
+/***********************************************************/
+/* Page cache for storing previous pages as basis for XBRLE compression */
+#define CACHE_N_WAY 2 /* 2-way assossiative cache */
Is there any reason we can't just use a GCache for this?
http://developer.gnome.org/glib/stable/glib-Caches.html
I'm not familiar with I will check.
Is it 2-way associative cache ?
Not quite...it's a very loose wrapper around GHashTable, which appears
to be fully associative in nature. It also doesn't seem to allow you to
do a lookup without destroying the table entry =\ (unless you do
something hacky like an extra insert beforehand to jack up the
refcount). If you go this route you're probably better off looking at
GHashTable directly.
Orit
Regards,
Anthony Liguori