On Tue, Jun 28, 2016 at 11:01:29AM +0200, Peter Lieven wrote: > Signed-off-by: Peter Lieven <p...@kamp.de> > --- > include/qemu/mmap-alloc.h | 6 ++++++ > util/mmap-alloc.c | 17 +++++++++++++++++ > 2 files changed, 23 insertions(+) > > diff --git a/include/qemu/mmap-alloc.h b/include/qemu/mmap-alloc.h > index 0899b2f..a457721 100644 > --- a/include/qemu/mmap-alloc.h > +++ b/include/qemu/mmap-alloc.h > @@ -9,4 +9,10 @@ void *qemu_ram_mmap(int fd, size_t size, size_t align, bool > shared); > > void qemu_ram_munmap(void *ptr, size_t size); > > +/* qemu_anon_ram_mmap maps private anonymous memory using mmap and > + * aborts if the allocation fails. its meant to act as an replacement > + * for g_malloc0 and friends. */
This needs better docs. When should one use g_malloc0 and when qemu_anon_ram_munmap? > +void *qemu_anon_ram_mmap(size_t size); > +void qemu_anon_ram_munmap(void *ptr, size_t size); > + The names are confusing - this isn't guest RAM, this is just internal QEMU memory, isn't it? Just rename it qemu_malloc0 then ... > #endif > diff --git a/util/mmap-alloc.c b/util/mmap-alloc.c > index 629d97a..c099858 100644 > --- a/util/mmap-alloc.c > +++ b/util/mmap-alloc.c > @@ -107,3 +107,20 @@ void qemu_ram_munmap(void *ptr, size_t size) > munmap(ptr, size + getpagesize()); > } > } > + > +void *qemu_anon_ram_mmap(size_t size) > +{ > + void *ptr = mmap(NULL, size, PROT_READ | PROT_WRITE, > + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); > + if (ptr == MAP_FAILED) { > + abort(); > + } > + return ptr; > +} > + > +void qemu_anon_ram_munmap(void *ptr, size_t size) > +{ > + if (ptr) { > + munmap(ptr, size); > + } > +} > -- > 1.9.1