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

page_cache.h (1911B)


      1/*
      2 * Page cache for QEMU
      3 * The cache is base on a hash of the page address
      4 *
      5 * Copyright 2012 Red Hat, Inc. and/or its affiliates
      6 *
      7 * Authors:
      8 *  Orit Wasserman  <owasserm@redhat.com>
      9 *
     10 * This work is licensed under the terms of the GNU GPL, version 2 or later.
     11 * See the COPYING file in the top-level directory.
     12 *
     13 */
     14
     15#ifndef PAGE_CACHE_H
     16#define PAGE_CACHE_H
     17
     18/* Page cache for storing guest pages */
     19typedef struct PageCache PageCache;
     20
     21/**
     22 * cache_init: Initialize the page cache
     23 *
     24 *
     25 * Returns new allocated cache or NULL on error
     26 *
     27 * @cache_size: cache size in bytes
     28 * @page_size: cache page size
     29 * @errp: set *errp if the check failed, with reason
     30 */
     31PageCache *cache_init(uint64_t cache_size, size_t page_size, Error **errp);
     32/**
     33 * cache_fini: free all cache resources
     34 * @cache pointer to the PageCache struct
     35 */
     36void cache_fini(PageCache *cache);
     37
     38/**
     39 * cache_is_cached: Checks to see if the page is cached
     40 *
     41 * Returns %true if page is cached
     42 *
     43 * @cache pointer to the PageCache struct
     44 * @addr: page addr
     45 * @current_age: current bitmap generation
     46 */
     47bool cache_is_cached(const PageCache *cache, uint64_t addr,
     48                     uint64_t current_age);
     49
     50/**
     51 * get_cached_data: Get the data cached for an addr
     52 *
     53 * Returns pointer to the data cached or NULL if not cached
     54 *
     55 * @cache pointer to the PageCache struct
     56 * @addr: page addr
     57 */
     58uint8_t *get_cached_data(const PageCache *cache, uint64_t addr);
     59
     60/**
     61 * cache_insert: insert the page into the cache. the page cache
     62 * will dup the data on insert. the previous value will be overwritten
     63 *
     64 * Returns -1 when the page isn't inserted into cache
     65 *
     66 * @cache pointer to the PageCache struct
     67 * @addr: page address
     68 * @pdata: pointer to the page
     69 * @current_age: current bitmap generation
     70 */
     71int cache_insert(PageCache *cache, uint64_t addr, const uint8_t *pdata,
     72                 uint64_t current_age);
     73
     74#endif