disas/libvixl: Update to upstream VIXL 1.7
[qemu.git] / tests / libqos / malloc.h
blob465efeb8fb9f4237a9ac748e28ebf6cf3b572f21
1 /*
2 * libqos malloc support
4 * Copyright IBM, Corp. 2012-2013
6 * Authors:
7 * Anthony Liguori <aliguori@us.ibm.com>
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.
13 #ifndef LIBQOS_MALLOC_H
14 #define LIBQOS_MALLOC_H
16 #include <stdint.h>
17 #include <sys/types.h>
18 #include "qemu/queue.h"
20 #define MLIST_ENTNAME entries
22 typedef enum {
23 ALLOC_NO_FLAGS = 0x00,
24 ALLOC_LEAK_WARN = 0x01,
25 ALLOC_LEAK_ASSERT = 0x02,
26 ALLOC_PARANOID = 0x04
27 } QAllocOpts;
29 typedef QTAILQ_HEAD(MemList, MemBlock) MemList;
30 typedef struct MemBlock {
31 QTAILQ_ENTRY(MemBlock) MLIST_ENTNAME;
32 uint64_t size;
33 uint64_t addr;
34 } MemBlock;
36 typedef struct QGuestAllocator {
37 QAllocOpts opts;
38 uint64_t start;
39 uint64_t end;
40 uint32_t page_size;
42 MemList used;
43 MemList free;
44 } QGuestAllocator;
46 MemBlock *mlist_new(uint64_t addr, uint64_t size);
47 void alloc_uninit(QGuestAllocator *allocator);
49 /* Always returns page aligned values */
50 uint64_t guest_alloc(QGuestAllocator *allocator, size_t size);
51 void guest_free(QGuestAllocator *allocator, uint64_t addr);
53 #endif