Lines Matching +full:bool +full:- +full:property

4  * Copyright (C) 2013-2014 Red Hat Inc
10 * See the COPYING file in the top-level directory.
17 #include "qapi/qapi-builtin-visit.h"
19 #include "qemu/config-file.h"
21 #include "qemu/mmap-alloc.h"
24 #include "hw/qdev-core.h"
42 if (!backend->use_canonical_path) { in host_memory_backend_get_name()
54 uint64_t value = backend->size; in host_memory_backend_get_size()
67 error_setg(errp, "cannot change property %s of %s ", name, in host_memory_backend_set_size()
77 "property '%s' of %s doesn't take value '%" PRIu64 "'", in host_memory_backend_set_size()
81 backend->size = value; in host_memory_backend_set_size()
93 value = find_first_bit(backend->host_nodes, MAX_NODES); in host_memory_backend_get_host_nodes()
101 value = find_next_bit(backend->host_nodes, MAX_NODES, value + 1); in host_memory_backend_get_host_nodes()
124 for (l = host_nodes; l; l = l->next) { in host_memory_backend_set_host_nodes()
125 if (l->value >= MAX_NODES) { in host_memory_backend_set_host_nodes()
126 error_setg(errp, "Invalid host-nodes value: %d", l->value); in host_memory_backend_set_host_nodes()
131 for (l = host_nodes; l; l = l->next) { in host_memory_backend_set_host_nodes()
132 bitmap_set(backend->host_nodes, l->value, 1); in host_memory_backend_set_host_nodes()
146 return backend->policy; in host_memory_backend_get_policy()
153 backend->policy = policy; in host_memory_backend_set_policy()
162 static bool host_memory_backend_get_merge(Object *obj, Error **errp) in host_memory_backend_get_merge()
166 return backend->merge; in host_memory_backend_get_merge()
169 static void host_memory_backend_set_merge(Object *obj, bool value, Error **errp) in host_memory_backend_set_merge()
177 assert(!backend->merge); in host_memory_backend_set_merge()
182 value != backend->merge) { in host_memory_backend_set_merge()
183 void *ptr = memory_region_get_ram_ptr(&backend->mr); in host_memory_backend_set_merge()
184 uint64_t sz = memory_region_size(&backend->mr); in host_memory_backend_set_merge()
190 backend->merge = value; in host_memory_backend_set_merge()
193 static bool host_memory_backend_get_dump(Object *obj, Error **errp) in host_memory_backend_get_dump()
197 return backend->dump; in host_memory_backend_get_dump()
200 static void host_memory_backend_set_dump(Object *obj, bool value, Error **errp) in host_memory_backend_set_dump()
208 assert(backend->dump); in host_memory_backend_set_dump()
213 value != backend->dump) { in host_memory_backend_set_dump()
214 void *ptr = memory_region_get_ram_ptr(&backend->mr); in host_memory_backend_set_dump()
215 uint64_t sz = memory_region_size(&backend->mr); in host_memory_backend_set_dump()
221 backend->dump = value; in host_memory_backend_set_dump()
224 static bool host_memory_backend_get_prealloc(Object *obj, Error **errp) in host_memory_backend_get_prealloc()
228 return backend->prealloc; in host_memory_backend_get_prealloc()
231 static void host_memory_backend_set_prealloc(Object *obj, bool value, in host_memory_backend_set_prealloc()
236 if (!backend->reserve && value) { in host_memory_backend_set_prealloc()
242 backend->prealloc = value; in host_memory_backend_set_prealloc()
246 if (value && !backend->prealloc) { in host_memory_backend_set_prealloc()
247 int fd = memory_region_get_fd(&backend->mr); in host_memory_backend_set_prealloc()
248 void *ptr = memory_region_get_ram_ptr(&backend->mr); in host_memory_backend_set_prealloc()
249 uint64_t sz = memory_region_size(&backend->mr); in host_memory_backend_set_prealloc()
251 if (!qemu_prealloc_mem(fd, ptr, sz, backend->prealloc_threads, in host_memory_backend_set_prealloc()
252 backend->prealloc_context, false, errp)) { in host_memory_backend_set_prealloc()
255 backend->prealloc = true; in host_memory_backend_set_prealloc()
263 visit_type_uint32(v, name, &backend->prealloc_threads, errp); in host_memory_backend_get_prealloc_threads()
276 error_setg(errp, "property '%s' of %s doesn't take value '%d'", name, in host_memory_backend_set_prealloc_threads()
280 backend->prealloc_threads = value; in host_memory_backend_set_prealloc_threads()
289 backend->merge = machine_mem_merge(machine); in host_memory_backend_init()
290 backend->dump = machine_dump_guest_core(machine); in host_memory_backend_init()
291 backend->guest_memfd = machine_require_guest_memfd(machine); in host_memory_backend_init()
292 backend->reserve = true; in host_memory_backend_init()
293 backend->prealloc_threads = machine->smp.cpus; in host_memory_backend_init()
301 bool host_memory_backend_mr_inited(HostMemoryBackend *backend) in host_memory_backend_mr_inited()
304 * NOTE: We forbid zero-length memory backend, so here zero means in host_memory_backend_mr_inited()
307 return memory_region_size(&backend->mr) != 0; in host_memory_backend_mr_inited()
312 return host_memory_backend_mr_inited(backend) ? &backend->mr : NULL; in host_memory_backend_get_memory()
315 void host_memory_backend_set_mapped(HostMemoryBackend *backend, bool mapped) in host_memory_backend_set_mapped()
317 backend->is_mapped = mapped; in host_memory_backend_set_mapped()
320 bool host_memory_backend_is_mapped(HostMemoryBackend *backend) in host_memory_backend_is_mapped()
322 return backend->is_mapped; in host_memory_backend_is_mapped()
327 size_t pagesize = qemu_ram_pagesize(memdev->mr.ram_block); in host_memory_backend_pagesize()
340 bool async = !phase_check(PHASE_LATE_BACKENDS_CREATED); in host_memory_backend_memory_complete()
342 if (!bc->alloc) { in host_memory_backend_memory_complete()
345 if (!bc->alloc(backend, errp)) { in host_memory_backend_memory_complete()
349 ptr = memory_region_get_ram_ptr(&backend->mr); in host_memory_backend_memory_complete()
350 sz = memory_region_size(&backend->mr); in host_memory_backend_memory_complete()
351 pagesize = qemu_ram_pagesize(backend->mr.ram_block); in host_memory_backend_memory_complete()
353 if (backend->aligned && !QEMU_IS_ALIGNED(sz, pagesize)) { in host_memory_backend_memory_complete()
360 if (backend->merge) { in host_memory_backend_memory_complete()
363 if (!backend->dump) { in host_memory_backend_memory_complete()
367 unsigned long lastbit = find_last_bit(backend->host_nodes, MAX_NODES); in host_memory_backend_memory_complete()
376 int mode = backend->policy; in host_memory_backend_memory_complete()
378 /* check for invalid host-nodes and policies and give more verbose in host_memory_backend_memory_complete()
380 if (maxnode && backend->policy == MPOL_DEFAULT) { in host_memory_backend_memory_complete()
381 error_setg(errp, "host-nodes must be empty for policy default," in host_memory_backend_memory_complete()
385 } else if (maxnode == 0 && backend->policy != MPOL_DEFAULT) { in host_memory_backend_memory_complete()
386 error_setg(errp, "host-nodes must be set for policy %s", in host_memory_backend_memory_complete()
387 HostMemPolicy_str(backend->policy)); in host_memory_backend_memory_complete()
394 * cuts off the last specified node. This means backend->host_nodes in host_memory_backend_memory_complete()
397 assert(sizeof(backend->host_nodes) >= in host_memory_backend_memory_complete()
412 mbind(ptr, sz, mode, backend->host_nodes, maxnode + 1, flags)) { in host_memory_backend_memory_complete()
413 if (backend->policy != MPOL_DEFAULT || errno != ENOSYS) { in host_memory_backend_memory_complete()
425 if (backend->prealloc && !qemu_prealloc_mem(memory_region_get_fd(&backend->mr), in host_memory_backend_memory_complete()
427 backend->prealloc_threads, in host_memory_backend_memory_complete()
428 backend->prealloc_context, in host_memory_backend_memory_complete()
434 static bool
444 static bool host_memory_backend_get_share(Object *o, Error **errp) in host_memory_backend_get_share()
448 return backend->share; in host_memory_backend_get_share()
451 static void host_memory_backend_set_share(Object *o, bool value, Error **errp) in host_memory_backend_set_share()
456 error_setg(errp, "cannot change property value"); in host_memory_backend_set_share()
459 backend->share = value; in host_memory_backend_set_share()
463 static bool host_memory_backend_get_reserve(Object *o, Error **errp) in host_memory_backend_get_reserve()
467 return backend->reserve; in host_memory_backend_get_reserve()
470 static void host_memory_backend_set_reserve(Object *o, bool value, Error **errp) in host_memory_backend_set_reserve()
475 error_setg(errp, "cannot change property value"); in host_memory_backend_set_reserve()
478 if (backend->prealloc && !value) { in host_memory_backend_set_reserve()
482 backend->reserve = value; in host_memory_backend_set_reserve()
486 static bool
491 return backend->use_canonical_path; in host_memory_backend_get_use_canonical_path()
495 host_memory_backend_set_use_canonical_path(Object *obj, bool value, in host_memory_backend_set_use_canonical_path()
500 backend->use_canonical_path = value; in host_memory_backend_set_use_canonical_path()
508 ucc->complete = host_memory_backend_memory_complete; in host_memory_backend_class_init()
509 ucc->can_be_deleted = host_memory_backend_can_be_deleted; in host_memory_backend_class_init()
526 object_class_property_add(oc, "prealloc-threads", "int", in host_memory_backend_class_init()
530 object_class_property_set_description(oc, "prealloc-threads", in host_memory_backend_class_init()
532 object_class_property_add_link(oc, "prealloc-context", in host_memory_backend_class_init()
535 object_class_property_set_description(oc, "prealloc-context", in host_memory_backend_class_init()
543 object_class_property_add(oc, "host-nodes", "int", in host_memory_backend_class_init()
547 object_class_property_set_description(oc, "host-nodes", in host_memory_backend_class_init()
567 * (as if it didn't have the 'x-' prefix including deprecation period) as in host_memory_backend_class_init()
570 * for ramblock-id set by compat properties on old machine types ( <= 4.0), in host_memory_backend_class_init()
572 * -machine memory-backend= option (main RAM historically used prefix-less in host_memory_backend_class_init()
573 * ramblock-id). in host_memory_backend_class_init()
575 object_class_property_add_bool(oc, "x-use-canonical-path-for-ramblock-id", in host_memory_backend_class_init()