]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
kvm: Introduce kvm__dump_mem helper
authorCyrill Gorcunov <gorcunov@gmail.com>
Wed, 31 Mar 2010 19:57:12 +0000 (23:57 +0400)
committerCyrill Gorcunov <gorcunov@gmail.com>
Thu, 1 Apr 2010 18:34:36 +0000 (22:34 +0400)
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
tools/kvm/include/kvm/kvm.h
tools/kvm/kvm.c

index f8101f9df165f177c2aca553b0562d75009beb03..dd5a3bb40562f8dbae0886b61c898dec13ba759a 100644 (file)
@@ -44,6 +44,7 @@ bool kvm__emulate_io(struct kvm *self, uint16_t port, void *data, int direction,
  */
 void kvm__show_code(struct kvm *self);
 void kvm__show_registers(struct kvm *self);
+void kvm__dump_mem(struct kvm *self, unsigned long addr, unsigned long size);
 
 extern const char *kvm_exit_reasons[];
 
index 142b1265bab9054d7f43fe0b89c10ff39e29c8db..9d138b4cda3ca72c67eb4f8a1461472d6c27dec5 100644 (file)
@@ -535,3 +535,22 @@ void kvm__show_code(struct kvm *self)
 
        printf("\n");
 }
+
+void kvm__dump_mem(struct kvm *self, unsigned long addr, unsigned long size)
+{
+       unsigned char *p;
+       unsigned long n;
+
+       size &= ~7; /* mod 8 */
+       if (!size)
+               return;
+
+       p = (unsigned char *)guest_flat_to_host(self, addr);
+
+       printf("Guest memory dump:\n");
+
+       for (n = 0; n < size; n+=8)
+               printf("0x%08lx: %02x%02x%02x%02x %02x%02x%02x%02x\n",
+                       addr + n, p[n + 0], p[n + 1], p[n + 2], p[n + 3],
+                                 p[n + 4], p[n + 5], p[n + 6], p[n + 7]);
+}