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