|
@@ -83,6 +83,21 @@ void qemu_ram_remap(ram_addr_t addr, ram_addr_t length);
|
|
|
ram_addr_t qemu_ram_addr_from_host(void *ptr);
|
|
|
ram_addr_t qemu_ram_addr_from_host_nofail(void *ptr);
|
|
|
RAMBlock *qemu_ram_block_by_name(const char *name);
|
|
|
+
|
|
|
+/*
|
|
|
+ * Translates a host ptr back to a RAMBlock and an offset in that RAMBlock.
|
|
|
+ *
|
|
|
+ * @ptr: The host pointer to translate.
|
|
|
+ * @round_offset: Whether to round the result offset down to a target page
|
|
|
+ * @offset: Will be set to the offset within the returned RAMBlock.
|
|
|
+ *
|
|
|
+ * Returns: RAMBlock (or NULL if not found)
|
|
|
+ *
|
|
|
+ * By the time this function returns, the returned pointer is not protected
|
|
|
+ * by RCU anymore. If the caller is not within an RCU critical section and
|
|
|
+ * does not hold the iothread lock, it must have other means of protecting the
|
|
|
+ * pointer, such as a reference to the memory region that owns the RAMBlock.
|
|
|
+ */
|
|
|
RAMBlock *qemu_ram_block_from_host(void *ptr, bool round_offset,
|
|
|
ram_addr_t *offset);
|
|
|
ram_addr_t qemu_ram_block_host_offset(RAMBlock *rb, void *host);
|