|
|
@ -360,10 +360,14 @@ typedef struct IOMMUMemoryRegionClass { |
|
|
typedef struct CoalescedMemoryRange CoalescedMemoryRange; |
|
|
typedef struct CoalescedMemoryRange CoalescedMemoryRange; |
|
|
typedef struct MemoryRegionIoeventfd MemoryRegionIoeventfd; |
|
|
typedef struct MemoryRegionIoeventfd MemoryRegionIoeventfd; |
|
|
|
|
|
|
|
|
|
|
|
/** MemoryRegion:
|
|
|
|
|
|
* |
|
|
|
|
|
* A struct representing a memory region. |
|
|
|
|
|
*/ |
|
|
struct MemoryRegion { |
|
|
struct MemoryRegion { |
|
|
Object parent_obj; |
|
|
Object parent_obj; |
|
|
|
|
|
|
|
|
/* All fields are private - violators will be prosecuted */ |
|
|
/* private: */ |
|
|
|
|
|
|
|
|
/* The following fields should fit in a cache line */ |
|
|
/* The following fields should fit in a cache line */ |
|
|
bool romd_mode; |
|
|
bool romd_mode; |
|
|
@ -452,7 +456,7 @@ struct MemoryListener { |
|
|
* AddressSpace: describes a mapping of addresses to #MemoryRegion objects |
|
|
* AddressSpace: describes a mapping of addresses to #MemoryRegion objects |
|
|
*/ |
|
|
*/ |
|
|
struct AddressSpace { |
|
|
struct AddressSpace { |
|
|
/* All fields are private. */ |
|
|
/* private: */ |
|
|
struct rcu_head rcu; |
|
|
struct rcu_head rcu; |
|
|
char *name; |
|
|
char *name; |
|
|
MemoryRegion *root; |
|
|
MemoryRegion *root; |
|
|
@ -1679,8 +1683,8 @@ bool memory_region_is_mapped(MemoryRegion *mr); |
|
|
* |
|
|
* |
|
|
* Returns a #MemoryRegionSection that describes a contiguous overlap. |
|
|
* Returns a #MemoryRegionSection that describes a contiguous overlap. |
|
|
* It will have the following characteristics: |
|
|
* It will have the following characteristics: |
|
|
* .@size = 0 iff no overlap was found |
|
|
* - @size = 0 iff no overlap was found |
|
|
* .@mr is non-%NULL iff an overlap was found |
|
|
* - @mr is non-%NULL iff an overlap was found |
|
|
* |
|
|
* |
|
|
* Remember that in the return value the @offset_within_region is |
|
|
* Remember that in the return value the @offset_within_region is |
|
|
* relative to the returned region (in the .@mr field), not to the |
|
|
* relative to the returned region (in the .@mr field), not to the |
|
|
@ -1691,8 +1695,8 @@ bool memory_region_is_mapped(MemoryRegion *mr); |
|
|
* returned one. However, in the special case where the @mr argument |
|
|
* returned one. However, in the special case where the @mr argument |
|
|
* has no container (and thus is the root of the address space), the |
|
|
* has no container (and thus is the root of the address space), the |
|
|
* following will hold: |
|
|
* following will hold: |
|
|
* .@offset_within_address_space >= @addr |
|
|
* - @offset_within_address_space >= @addr |
|
|
* .@offset_within_address_space + .@size <= @addr + @size |
|
|
* - @offset_within_address_space + .@size <= @addr + @size |
|
|
* |
|
|
* |
|
|
* @mr: a MemoryRegion within which @addr is a relative address |
|
|
* @mr: a MemoryRegion within which @addr is a relative address |
|
|
* @addr: start of the area within @as to be searched |
|
|
* @addr: start of the area within @as to be searched |
|
|
|