On 13/01/2015 04:34, John Snow wrote: > Move the list-specific initialization over into > malloc.c, to keep all of the list implementation > details within the same file. > > The allocation and freeing of these structures are > now both back within the same layer. > > Signed-off-by: John Snow <js...@redhat.com> > --- > tests/libqos/malloc-pc.c | 20 ++++---------------- > tests/libqos/malloc.c | 17 +++++++++++++++++ > tests/libqos/malloc.h | 1 + > 3 files changed, 22 insertions(+), 16 deletions(-) > > diff --git a/tests/libqos/malloc-pc.c b/tests/libqos/malloc-pc.c > index c9c48fd..36a0740 100644 > --- a/tests/libqos/malloc-pc.c > +++ b/tests/libqos/malloc-pc.c > @@ -32,31 +32,19 @@ void pc_alloc_uninit(QGuestAllocator *allocator) > > QGuestAllocator *pc_alloc_init_flags(QAllocOpts flags) > { > - QGuestAllocator *s = g_malloc0(sizeof(*s)); > + QGuestAllocator *s; > uint64_t ram_size; > QFWCFG *fw_cfg = pc_fw_cfg_init(); > - MemBlock *node; > + > + ram_size = qfw_cfg_get_u64(fw_cfg, FW_CFG_RAM_SIZE); > + s = alloc_init(1 << 20, MIN(ram_size, 0xE0000000)); > > s->opts = flags; > s->page_size = PAGE_SIZE; > > - ram_size = qfw_cfg_get_u64(fw_cfg, FW_CFG_RAM_SIZE); > - > - /* Start at 1MB */ > - s->start = 1 << 20; > - > - /* Respect PCI hole */ > - s->end = MIN(ram_size, 0xE0000000); > - > /* clean-up */ > g_free(fw_cfg); > > - QTAILQ_INIT(&s->used); > - QTAILQ_INIT(&s->free); > - > - node = mlist_new(s->start, s->end - s->start); > - QTAILQ_INSERT_HEAD(&s->free, node, MLIST_ENTNAME); > - > return s; > } > > diff --git a/tests/libqos/malloc.c b/tests/libqos/malloc.c > index 5debf18..0d34ecd 100644 > --- a/tests/libqos/malloc.c > +++ b/tests/libqos/malloc.c > @@ -268,3 +268,20 @@ void guest_free(QGuestAllocator *allocator, uint64_t > addr) > mlist_check(allocator); > } > } > + > +QGuestAllocator *alloc_init(uint64_t start, uint64_t end) > +{ > + QGuestAllocator *s = g_malloc0(sizeof(*s)); > + MemBlock *node; > + > + s->start = start; > + s->end = end; > + > + QTAILQ_INIT(&s->used); > + QTAILQ_INIT(&s->free); > + > + node = mlist_new(s->start, s->end - s->start); > + QTAILQ_INSERT_HEAD(&s->free, node, MLIST_ENTNAME); > + > + return s; > +} > diff --git a/tests/libqos/malloc.h b/tests/libqos/malloc.h > index 465efeb..677db77 100644 > --- a/tests/libqos/malloc.h > +++ b/tests/libqos/malloc.h > @@ -50,4 +50,5 @@ void alloc_uninit(QGuestAllocator *allocator); > uint64_t guest_alloc(QGuestAllocator *allocator, size_t size); > void guest_free(QGuestAllocator *allocator, uint64_t addr); > > +QGuestAllocator *alloc_init(uint64_t start, uint64_t end); > #endif >
Reviewed-by: Paolo Bonzini <pbonz...@redhat.com>