qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

hostmem.h (2219B)


      1 /*
      2  * QEMU Host Memory Backend
      3  *
      4  * Copyright (C) 2013-2014 Red Hat Inc
      5  *
      6  * Authors:
      7  *   Igor Mammedov <imammedo@redhat.com>
      8  *
      9  * This work is licensed under the terms of the GNU GPL, version 2 or later.
     10  * See the COPYING file in the top-level directory.
     11  */
     12 
     13 #ifndef SYSEMU_HOSTMEM_H
     14 #define SYSEMU_HOSTMEM_H
     15 
     16 #include "sysemu/numa.h"
     17 #include "qapi/qapi-types-machine.h"
     18 #include "qom/object.h"
     19 #include "exec/memory.h"
     20 #include "qemu/bitmap.h"
     21 #include "qemu/thread-context.h"
     22 
     23 #define TYPE_MEMORY_BACKEND "memory-backend"
     24 OBJECT_DECLARE_TYPE(HostMemoryBackend, HostMemoryBackendClass,
     25                     MEMORY_BACKEND)
     26 
     27 /* hostmem-ram.c */
     28 /**
     29  * @TYPE_MEMORY_BACKEND_RAM:
     30  * name of backend that uses mmap on the anonymous RAM
     31  */
     32 
     33 #define TYPE_MEMORY_BACKEND_RAM "memory-backend-ram"
     34 
     35 /* hostmem-file.c */
     36 /**
     37  * @TYPE_MEMORY_BACKEND_FILE:
     38  * name of backend that uses mmap on a file descriptor
     39  */
     40 #define TYPE_MEMORY_BACKEND_FILE "memory-backend-file"
     41 
     42 
     43 /**
     44  * HostMemoryBackendClass:
     45  * @parent_class: opaque parent class container
     46  */
     47 struct HostMemoryBackendClass {
     48     ObjectClass parent_class;
     49 
     50     void (*alloc)(HostMemoryBackend *backend, Error **errp);
     51 };
     52 
     53 /**
     54  * @HostMemoryBackend
     55  *
     56  * @parent: opaque parent object container
     57  * @size: amount of memory backend provides
     58  * @mr: MemoryRegion representing host memory belonging to backend
     59  * @prealloc_threads: number of threads to be used for preallocatining RAM
     60  */
     61 struct HostMemoryBackend {
     62     /* private */
     63     Object parent;
     64 
     65     /* protected */
     66     uint64_t size;
     67     bool merge, dump, use_canonical_path;
     68     bool prealloc, is_mapped, share, reserve;
     69     uint32_t prealloc_threads;
     70     ThreadContext *prealloc_context;
     71     DECLARE_BITMAP(host_nodes, MAX_NODES + 1);
     72     HostMemPolicy policy;
     73 
     74     MemoryRegion mr;
     75 };
     76 
     77 bool host_memory_backend_mr_inited(HostMemoryBackend *backend);
     78 MemoryRegion *host_memory_backend_get_memory(HostMemoryBackend *backend);
     79 
     80 void host_memory_backend_set_mapped(HostMemoryBackend *backend, bool mapped);
     81 bool host_memory_backend_is_mapped(HostMemoryBackend *backend);
     82 size_t host_memory_backend_pagesize(HostMemoryBackend *memdev);
     83 char *host_memory_backend_get_name(HostMemoryBackend *backend);
     84 
     85 #endif