From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55791) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XPZqZ-00056D-C4 for qemu-devel@nongnu.org; Thu, 04 Sep 2014 12:25:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XPZqQ-0001jQ-BC for qemu-devel@nongnu.org; Thu, 04 Sep 2014 12:25:19 -0400 Received: from mail-wi0-x231.google.com ([2a00:1450:400c:c05::231]:34326) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XPZqQ-0001jK-5f for qemu-devel@nongnu.org; Thu, 04 Sep 2014 12:25:10 -0400 Received: by mail-wi0-f177.google.com with SMTP id cc10so1422651wib.10 for ; Thu, 04 Sep 2014 09:25:07 -0700 (PDT) From: =?UTF-8?q?Marc=20Mar=C3=AD?= Date: Thu, 4 Sep 2014 18:24:38 +0200 Message-Id: <1409847879-9783-3-git-send-email-marc.mari.barcelo@gmail.com> In-Reply-To: <1409847879-9783-1-git-send-email-marc.mari.barcelo@gmail.com> References: <1409847879-9783-1-git-send-email-marc.mari.barcelo@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [Qemu-devel] [PATCH 2/3] libqos: Add malloc generic List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc=20Mar=C3=AD?= , Paolo Bonzini , Stefan Hajnoczi This malloc is a basic interface implementation that works for any platform. It should be replaced in the future for a real malloc implementation for each of the platforms. Signed-off-by: Marc Marí --- tests/libqos/malloc-generic.c | 54 +++++++++++++++++++++++++++++++++++++++++ tests/libqos/malloc-generic.h | 18 ++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 tests/libqos/malloc-generic.c create mode 100644 tests/libqos/malloc-generic.h diff --git a/tests/libqos/malloc-generic.c b/tests/libqos/malloc-generic.c new file mode 100644 index 0000000..32f9bb4 --- /dev/null +++ b/tests/libqos/malloc-generic.c @@ -0,0 +1,54 @@ +/* + * Basic libqos generic malloc support + * + * Copyright (c) 2014 Marc Marí + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + */ + +#include "libqos/malloc-generic.h" +#include + +typedef struct GENAlloc { + QGuestAllocator alloc; + + uint64_t start; + uint64_t end; + uint32_t page_size; +} GENAlloc; + +static uint64_t generic_alloc(QGuestAllocator *allocator, size_t size) +{ + GENAlloc *s = (GENAlloc *)allocator; + uint64_t addr; + + size += (s->page_size - 1); + size &= -s->page_size; + + g_assert_cmpint((s->start + size), <=, s->end); + + addr = s->start; + s->start += size; + + return addr; +} + +static void generic_free(QGuestAllocator *allocator, uint64_t addr) +{ +} + +QGuestAllocator *generic_alloc_init(uint64_t base_addr, uint64_t size, + uint32_t page_size) +{ + GENAlloc *s = g_malloc0(sizeof(*s)); + + s->alloc.alloc = generic_alloc; + s->alloc.free = generic_free; + + s->page_size = page_size; + s->start = base_addr; + s->end = base_addr + size; + + return &s->alloc; +} diff --git a/tests/libqos/malloc-generic.h b/tests/libqos/malloc-generic.h new file mode 100644 index 0000000..7bf9f80 --- /dev/null +++ b/tests/libqos/malloc-generic.h @@ -0,0 +1,18 @@ +/* + * Basic libqos generic malloc support + * + * Copyright (c) 2014 Marc Marí + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + */ + +#ifndef LIBQOS_MALLOC_GENERIC_H +#define LIBQOS_MALLOC_GENERIC_H + +#include "libqos/malloc.h" + +QGuestAllocator *generic_alloc_init(uint64_t base_addr, uint64_t size, + uint32_t page_size); + +#endif -- 1.7.10.4