* [Qemu-devel] [PATCH 1/2] hostmem: introduce host_memory_backend_mr_inited()
2017-03-10 13:09 [Qemu-devel] [PATCH 0/2] hostmem: introduce host_memory_backend_mr_inited Peter Xu
@ 2017-03-10 13:09 ` Peter Xu
2017-03-10 13:09 ` [Qemu-devel] [PATCH 2/2] hostmem: use host_memory_backend_mr_inited() where proper Peter Xu
2017-03-10 18:27 ` [Qemu-devel] [PATCH 0/2] hostmem: introduce host_memory_backend_mr_inited Eduardo Habkost
2 siblings, 0 replies; 4+ messages in thread
From: Peter Xu @ 2017-03-10 13:09 UTC (permalink / raw)
To: qemu-devel
Cc: Paolo Bonzini, Igor Mammedov, Peter Maydell, peterx,
Eduardo Habkost
We were checking this against memory region size of host memory
backend's mr field to see whether the mr has been inited. This is
efficient but less elegant. Let's make a helper for it to avoid
confusions, along with some notes.
Suggested-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Xu <peterx@redhat.com>
---
backends/hostmem.c | 9 +++++++++
include/sysemu/hostmem.h | 1 +
2 files changed, 10 insertions(+)
diff --git a/backends/hostmem.c b/backends/hostmem.c
index 7f5de70..4e9ef62 100644
--- a/backends/hostmem.c
+++ b/backends/hostmem.c
@@ -243,6 +243,15 @@ static void host_memory_backend_init(Object *obj)
backend->prealloc = mem_prealloc;
}
+bool host_memory_backend_mr_inited(HostMemoryBackend *backend)
+{
+ /*
+ * NOTE: We forbid zero-length memory backend, so here zero means
+ * "we haven't inited the backend memory region yet".
+ */
+ return memory_region_size(&backend->mr) != 0;
+}
+
MemoryRegion *
host_memory_backend_get_memory(HostMemoryBackend *backend, Error **errp)
{
diff --git a/include/sysemu/hostmem.h b/include/sysemu/hostmem.h
index ecae0cf..ed6a437 100644
--- a/include/sysemu/hostmem.h
+++ b/include/sysemu/hostmem.h
@@ -62,6 +62,7 @@ struct HostMemoryBackend {
MemoryRegion mr;
};
+bool host_memory_backend_mr_inited(HostMemoryBackend *backend);
MemoryRegion *host_memory_backend_get_memory(HostMemoryBackend *backend,
Error **errp);
--
2.7.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Qemu-devel] [PATCH 2/2] hostmem: use host_memory_backend_mr_inited() where proper
2017-03-10 13:09 [Qemu-devel] [PATCH 0/2] hostmem: introduce host_memory_backend_mr_inited Peter Xu
2017-03-10 13:09 ` [Qemu-devel] [PATCH 1/2] hostmem: introduce host_memory_backend_mr_inited() Peter Xu
@ 2017-03-10 13:09 ` Peter Xu
2017-03-10 18:27 ` [Qemu-devel] [PATCH 0/2] hostmem: introduce host_memory_backend_mr_inited Eduardo Habkost
2 siblings, 0 replies; 4+ messages in thread
From: Peter Xu @ 2017-03-10 13:09 UTC (permalink / raw)
To: qemu-devel
Cc: Paolo Bonzini, Igor Mammedov, Peter Maydell, peterx,
Eduardo Habkost
Use the new interface to boost readability.
Signed-off-by: Peter Xu <peterx@redhat.com>
---
backends/hostmem-file.c | 6 +++---
backends/hostmem.c | 10 +++++-----
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/backends/hostmem-file.c b/backends/hostmem-file.c
index 42efb2f..fc4ef46 100644
--- a/backends/hostmem-file.c
+++ b/backends/hostmem-file.c
@@ -51,7 +51,7 @@ file_backend_memory_alloc(HostMemoryBackend *backend, Error **errp)
#ifndef CONFIG_LINUX
error_setg(errp, "-mem-path not supported on this host");
#else
- if (!memory_region_size(&backend->mr)) {
+ if (!host_memory_backend_mr_inited(backend)) {
gchar *path;
backend->force_prealloc = mem_prealloc;
path = object_get_canonical_path(OBJECT(backend));
@@ -76,7 +76,7 @@ static void set_mem_path(Object *o, const char *str, Error **errp)
HostMemoryBackend *backend = MEMORY_BACKEND(o);
HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(o);
- if (memory_region_size(&backend->mr)) {
+ if (host_memory_backend_mr_inited(backend)) {
error_setg(errp, "cannot change property value");
return;
}
@@ -96,7 +96,7 @@ static void file_memory_backend_set_share(Object *o, bool value, Error **errp)
HostMemoryBackend *backend = MEMORY_BACKEND(o);
HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(o);
- if (memory_region_size(&backend->mr)) {
+ if (host_memory_backend_mr_inited(backend)) {
error_setg(errp, "cannot change property value");
return;
}
diff --git a/backends/hostmem.c b/backends/hostmem.c
index 4e9ef62..07137a2 100644
--- a/backends/hostmem.c
+++ b/backends/hostmem.c
@@ -45,7 +45,7 @@ host_memory_backend_set_size(Object *obj, Visitor *v, const char *name,
Error *local_err = NULL;
uint64_t value;
- if (memory_region_size(&backend->mr)) {
+ if (host_memory_backend_mr_inited(backend)) {
error_setg(&local_err, "cannot change property value");
goto out;
}
@@ -152,7 +152,7 @@ static void host_memory_backend_set_merge(Object *obj, bool value, Error **errp)
{
HostMemoryBackend *backend = MEMORY_BACKEND(obj);
- if (!memory_region_size(&backend->mr)) {
+ if (!host_memory_backend_mr_inited(backend)) {
backend->merge = value;
return;
}
@@ -178,7 +178,7 @@ static void host_memory_backend_set_dump(Object *obj, bool value, Error **errp)
{
HostMemoryBackend *backend = MEMORY_BACKEND(obj);
- if (!memory_region_size(&backend->mr)) {
+ if (!host_memory_backend_mr_inited(backend)) {
backend->dump = value;
return;
}
@@ -214,7 +214,7 @@ static void host_memory_backend_set_prealloc(Object *obj, bool value,
}
}
- if (!memory_region_size(&backend->mr)) {
+ if (!host_memory_backend_mr_inited(backend)) {
backend->prealloc = value;
return;
}
@@ -255,7 +255,7 @@ bool host_memory_backend_mr_inited(HostMemoryBackend *backend)
MemoryRegion *
host_memory_backend_get_memory(HostMemoryBackend *backend, Error **errp)
{
- return memory_region_size(&backend->mr) ? &backend->mr : NULL;
+ return host_memory_backend_mr_inited(backend) ? &backend->mr : NULL;
}
void host_memory_backend_set_mapped(HostMemoryBackend *backend, bool mapped)
--
2.7.4
^ permalink raw reply related [flat|nested] 4+ messages in thread