summaryrefslogtreecommitdiff
path: root/backends
diff options
context:
space:
mode:
authorStefan Hajnoczi <stefanha@redhat.com>2021-01-04 17:13:18 +0000
committerEduardo Habkost <ehabkost@redhat.com>2021-02-01 17:07:34 -0500
commit369d6dc4de45b8e5e35a851f5719e7fd59a0462f (patch)
tree9b7bf91786c4866c63bab05090e83964a7bbbf33 /backends
parent74208cd252c5da9d867270a178799abd802b9338 (diff)
downloadqemu-369d6dc4de45b8e5e35a851f5719e7fd59a0462f.zip
memory: add readonly support to memory_region_init_ram_from_file()
There is currently no way to open(O_RDONLY) and mmap(PROT_READ) when creating a memory region from a file. This functionality is needed since the underlying host file may not allow writing. Add a bool readonly argument to memory_region_init_ram_from_file() and the APIs it calls. Extend memory_region_init_ram_from_file() rather than introducing a memory_region_init_rom_from_file() API so that callers can easily make a choice between read/write and read-only at runtime without calling different APIs. No new RAMBlock flag is introduced for read-only because it's unclear whether RAMBlocks need to know that they are read-only. Pass a bool readonly argument instead. Both of these design decisions can be changed in the future. It just seemed like the simplest approach to me. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Liam Merwick <liam.merwick@oracle.com> Acked-by: Michael S. Tsirkin <mst@redhat.com> Message-Id: <20210104171320.575838-2-stefanha@redhat.com> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Diffstat (limited to 'backends')
-rw-r--r--backends/hostmem-file.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/backends/hostmem-file.c b/backends/hostmem-file.c
index 40e1e5b3e3..e827692124 100644
--- a/backends/hostmem-file.c
+++ b/backends/hostmem-file.c
@@ -56,7 +56,7 @@ file_backend_memory_alloc(HostMemoryBackend *backend, Error **errp)
backend->size, fb->align,
(backend->share ? RAM_SHARED : 0) |
(fb->is_pmem ? RAM_PMEM : 0),
- fb->mem_path, errp);
+ fb->mem_path, false, errp);
g_free(name);
#endif
}