xref: /qemu/tests/qtest/libqos/libqos-malloc.h (revision 8a0743cf747c659a3443e722a832c8f21f1cc774)
1*8a0743cfSAnthony Liguori /*
2*8a0743cfSAnthony Liguori  * libqos malloc support
3*8a0743cfSAnthony Liguori  *
4*8a0743cfSAnthony Liguori  * Copyright IBM, Corp. 2012-2013
5*8a0743cfSAnthony Liguori  *
6*8a0743cfSAnthony Liguori  * Authors:
7*8a0743cfSAnthony Liguori  *  Anthony Liguori   <aliguori@us.ibm.com>
8*8a0743cfSAnthony Liguori  *
9*8a0743cfSAnthony Liguori  * This work is licensed under the terms of the GNU GPL, version 2 or later.
10*8a0743cfSAnthony Liguori  * See the COPYING file in the top-level directory.
11*8a0743cfSAnthony Liguori  */
12*8a0743cfSAnthony Liguori 
13*8a0743cfSAnthony Liguori #ifndef LIBQOS_MALLOC_H
14*8a0743cfSAnthony Liguori #define LIBQOS_MALLOC_H
15*8a0743cfSAnthony Liguori 
16*8a0743cfSAnthony Liguori #include <stdint.h>
17*8a0743cfSAnthony Liguori #include <sys/types.h>
18*8a0743cfSAnthony Liguori 
19*8a0743cfSAnthony Liguori typedef struct QGuestAllocator QGuestAllocator;
20*8a0743cfSAnthony Liguori 
21*8a0743cfSAnthony Liguori struct QGuestAllocator
22*8a0743cfSAnthony Liguori {
23*8a0743cfSAnthony Liguori     uint64_t (*alloc)(QGuestAllocator *allocator, size_t size);
24*8a0743cfSAnthony Liguori     void (*free)(QGuestAllocator *allocator, uint64_t addr);
25*8a0743cfSAnthony Liguori };
26*8a0743cfSAnthony Liguori 
27*8a0743cfSAnthony Liguori /* Always returns page aligned values */
28*8a0743cfSAnthony Liguori static inline uint64_t guest_alloc(QGuestAllocator *allocator, size_t size)
29*8a0743cfSAnthony Liguori {
30*8a0743cfSAnthony Liguori     return allocator->alloc(allocator, size);
31*8a0743cfSAnthony Liguori }
32*8a0743cfSAnthony Liguori 
33*8a0743cfSAnthony Liguori static inline void guest_free(QGuestAllocator *allocator, uint64_t addr)
34*8a0743cfSAnthony Liguori {
35*8a0743cfSAnthony Liguori     allocator->alloc(allocator, addr);
36*8a0743cfSAnthony Liguori }
37*8a0743cfSAnthony Liguori 
38*8a0743cfSAnthony Liguori #endif
39