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




Reply via email to