qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: [patch uq/master 5/8] Export qemu_ram_addr_from_host


From: Anthony Liguori
Subject: [Qemu-devel] Re: [patch uq/master 5/8] Export qemu_ram_addr_from_host
Date: Tue, 05 Oct 2010 07:57:14 -0500
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.12) Gecko/20100915 Lightning/1.0b1 Thunderbird/3.0.8

On 10/04/2010 01:54 PM, Marcelo Tosatti wrote:
To be used by next patches.

Signed-off-by: Marcelo Tosatti<address@hidden>

Index: qemu/cpu-common.h
===================================================================
--- qemu.orig/cpu-common.h
+++ qemu/cpu-common.h
@@ -47,6 +47,7 @@ void qemu_ram_free(ram_addr_t addr);
  /* This should only be used for ram local to a device.  */
  void *qemu_get_ram_ptr(ram_addr_t addr);
  /* This should not be used by devices.  */
+int do_qemu_ram_addr_from_host(void *ptr, ram_addr_t *ram_addr);

This is not a great name for a function. A better way to do this would be to make the existing qemu_ram_addr_from_host() -> qemu_ram_addr_from_host_nofail().

Regards,

Anthony Liguori

  ram_addr_t qemu_ram_addr_from_host(void *ptr);

  int cpu_register_io_memory(CPUReadMemoryFunc * const *mem_read,
Index: qemu/exec.c
===================================================================
--- qemu.orig/exec.c
+++ qemu/exec.c
@@ -2938,23 +2938,31 @@ void *qemu_get_ram_ptr(ram_addr_t addr)
      return NULL;
  }

-/* Some of the softmmu routines need to translate from a host pointer
-   (typically a TLB entry) back to a ram offset.  */
-ram_addr_t qemu_ram_addr_from_host(void *ptr)
+int do_qemu_ram_addr_from_host(void *ptr, ram_addr_t *ram_addr)
  {
      RAMBlock *block;
      uint8_t *host = ptr;

      QLIST_FOREACH(block,&ram_list.blocks, next) {
          if (host - block->host<  block->length) {
-            return block->offset + (host - block->host);
+            *ram_addr = block->offset + (host - block->host);
+            return 0;
          }
      }
+    return -1;
+}

-    fprintf(stderr, "Bad ram pointer %p\n", ptr);
-    abort();
+/* Some of the softmmu routines need to translate from a host pointer
+   (typically a TLB entry) back to a ram offset.  */
+ram_addr_t qemu_ram_addr_from_host(void *ptr)
+{
+    ram_addr_t ram_addr;

-    return 0;
+    if (do_qemu_ram_addr_from_host(ptr,&ram_addr)) {
+        fprintf(stderr, "Bad ram pointer %p\n", ptr);
+        abort();
+    }
+    return ram_addr;
  }

  static uint32_t unassigned_mem_readb(void *opaque, target_phys_addr_t addr)


--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to address@hidden
More majordomo info at  http://vger.kernel.org/majordomo-info.html




reply via email to

[Prev in Thread] Current Thread [Next in Thread]