mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-23 19:49:43 +00:00
Add memory_region_init_ram_from_fd()
Add a new function to initialize a RAM memory region with a file descriptor to be mmap-ed. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20170602141229.15326-5-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
38b3362dd1
commit
fea617c58b
@ -456,6 +456,26 @@ void memory_region_init_ram_from_file(MemoryRegion *mr,
|
||||
bool share,
|
||||
const char *path,
|
||||
Error **errp);
|
||||
|
||||
/**
|
||||
* memory_region_init_ram_from_fd: Initialize RAM memory region with a
|
||||
* mmap-ed backend.
|
||||
*
|
||||
* @mr: the #MemoryRegion to be initialized.
|
||||
* @owner: the object that tracks the region's reference count
|
||||
* @name: the name of the region.
|
||||
* @size: size of the region.
|
||||
* @share: %true if memory must be mmaped with the MAP_SHARED flag
|
||||
* @fd: the fd to mmap.
|
||||
* @errp: pointer to Error*, to store an error if it happens.
|
||||
*/
|
||||
void memory_region_init_ram_from_fd(MemoryRegion *mr,
|
||||
struct Object *owner,
|
||||
const char *name,
|
||||
uint64_t size,
|
||||
bool share,
|
||||
int fd,
|
||||
Error **errp);
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
16
memory.c
16
memory.c
@ -1397,6 +1397,22 @@ void memory_region_init_ram_from_file(MemoryRegion *mr,
|
||||
mr->ram_block = qemu_ram_alloc_from_file(size, mr, share, path, errp);
|
||||
mr->dirty_log_mask = tcg_enabled() ? (1 << DIRTY_MEMORY_CODE) : 0;
|
||||
}
|
||||
|
||||
void memory_region_init_ram_from_fd(MemoryRegion *mr,
|
||||
struct Object *owner,
|
||||
const char *name,
|
||||
uint64_t size,
|
||||
bool share,
|
||||
int fd,
|
||||
Error **errp)
|
||||
{
|
||||
memory_region_init(mr, owner, name, size);
|
||||
mr->ram = true;
|
||||
mr->terminates = true;
|
||||
mr->destructor = memory_region_destructor_ram;
|
||||
mr->ram_block = qemu_ram_alloc_from_fd(size, mr, share, fd, errp);
|
||||
mr->dirty_log_mask = tcg_enabled() ? (1 << DIRTY_MEMORY_CODE) : 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
void memory_region_init_ram_ptr(MemoryRegion *mr,
|
||||
|
Loading…
Reference in New Issue
Block a user