qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

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 */
     19 typedef 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  */
     31 PageCache *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  */
     36 void 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  */
     47 bool 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  */
     58 uint8_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  */
     71 int cache_insert(PageCache *cache, uint64_t addr, const uint8_t *pdata,
     72                  uint64_t current_age);
     73 
     74 #endif