cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

malloc.h (1226B)


      1/*
      2 * libqos malloc support
      3 *
      4 * Copyright IBM, Corp. 2012-2013
      5 *
      6 * Authors:
      7 *  Anthony Liguori   <aliguori@us.ibm.com>
      8 *
      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.
     11 */
     12
     13#ifndef LIBQOS_MALLOC_H
     14#define LIBQOS_MALLOC_H
     15
     16#include "qemu/queue.h"
     17#include "libqtest.h"
     18
     19typedef enum {
     20    ALLOC_NO_FLAGS    = 0x00,
     21    ALLOC_LEAK_WARN   = 0x01,
     22    ALLOC_LEAK_ASSERT = 0x02,
     23    ALLOC_PARANOID    = 0x04
     24} QAllocOpts;
     25
     26typedef QTAILQ_HEAD(MemList, MemBlock) MemList;
     27
     28typedef struct QGuestAllocator {
     29    QAllocOpts opts;
     30    uint64_t start;
     31    uint64_t end;
     32    uint32_t page_size;
     33
     34    MemList *used;
     35    MemList *free;
     36} QGuestAllocator;
     37
     38/* Always returns page aligned values */
     39uint64_t guest_alloc(QGuestAllocator *allocator, size_t size);
     40void guest_free(QGuestAllocator *allocator, uint64_t addr);
     41void migrate_allocator(QGuestAllocator *src, QGuestAllocator *dst);
     42
     43void alloc_set_flags(QGuestAllocator *allocator, QAllocOpts opts);
     44
     45void alloc_init(QGuestAllocator *alloc, QAllocOpts flags,
     46                uint64_t start, uint64_t end,
     47                size_t page_size);
     48void alloc_destroy(QGuestAllocator *allocator);
     49
     50#endif