mirror of
https://github.com/qemu/qemu.git
synced 2025-08-15 05:06:56 +00:00
memory: export AddressSpace
The DMA API will use an AddressSpace to differentiate among different initiators. Reviewed-by: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
parent
8786db7cb9
commit
9ad2bbc167
11
memory.c
11
memory.c
@ -216,17 +216,8 @@ struct FlatView {
|
|||||||
unsigned nr_allocated;
|
unsigned nr_allocated;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct AddressSpace AddressSpace;
|
|
||||||
typedef struct AddressSpaceOps AddressSpaceOps;
|
typedef struct AddressSpaceOps AddressSpaceOps;
|
||||||
|
|
||||||
/* A system address space - I/O, memory, etc. */
|
|
||||||
struct AddressSpace {
|
|
||||||
MemoryRegion *root;
|
|
||||||
FlatView *current_map;
|
|
||||||
int ioeventfd_nb;
|
|
||||||
MemoryRegionIoeventfd *ioeventfds;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define FOR_EACH_FLAT_RANGE(var, view) \
|
#define FOR_EACH_FLAT_RANGE(var, view) \
|
||||||
for (var = (view)->ranges; var < (view)->ranges + (view)->nr; ++var)
|
for (var = (view)->ranges; var < (view)->ranges + (view)->nr; ++var)
|
||||||
|
|
||||||
@ -1510,7 +1501,7 @@ void memory_listener_unregister(MemoryListener *listener)
|
|||||||
QTAILQ_REMOVE(&memory_listeners, listener, link);
|
QTAILQ_REMOVE(&memory_listeners, listener, link);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void address_space_init(AddressSpace *as, MemoryRegion *root)
|
void address_space_init(AddressSpace *as, MemoryRegion *root)
|
||||||
{
|
{
|
||||||
memory_region_transaction_begin();
|
memory_region_transaction_begin();
|
||||||
as->root = root;
|
as->root = root;
|
||||||
|
21
memory.h
21
memory.h
@ -157,6 +157,19 @@ struct MemoryRegionPortio {
|
|||||||
|
|
||||||
#define PORTIO_END_OF_LIST() { }
|
#define PORTIO_END_OF_LIST() { }
|
||||||
|
|
||||||
|
typedef struct AddressSpace AddressSpace;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AddressSpace: describes a mapping of addresses to #MemoryRegion objects
|
||||||
|
*/
|
||||||
|
struct AddressSpace {
|
||||||
|
/* All fields are private. */
|
||||||
|
MemoryRegion *root;
|
||||||
|
struct FlatView *current_map;
|
||||||
|
int ioeventfd_nb;
|
||||||
|
struct MemoryRegionIoeventfd *ioeventfds;
|
||||||
|
};
|
||||||
|
|
||||||
typedef struct MemoryRegionSection MemoryRegionSection;
|
typedef struct MemoryRegionSection MemoryRegionSection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -776,6 +789,14 @@ void memory_global_dirty_log_stop(void);
|
|||||||
|
|
||||||
void mtree_info(fprintf_function mon_printf, void *f);
|
void mtree_info(fprintf_function mon_printf, void *f);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* address_space_init: initializes an address space
|
||||||
|
*
|
||||||
|
* @as: an uninitialized #AddressSpace
|
||||||
|
* @root: a #MemoryRegion that routes addesses for the address space
|
||||||
|
*/
|
||||||
|
void address_space_init(AddressSpace *as, MemoryRegion *root);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user