qemu/migration/page_cache.h
<<
>>
Prefs
   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(int64_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
  75