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

snapshot.h (4516B)


      1/*
      2 * Block layer snapshot related functions
      3 *
      4 * Copyright (c) 2003-2008 Fabrice Bellard
      5 *
      6 * Permission is hereby granted, free of charge, to any person obtaining a copy
      7 * of this software and associated documentation files (the "Software"), to deal
      8 * in the Software without restriction, including without limitation the rights
      9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
     10 * copies of the Software, and to permit persons to whom the Software is
     11 * furnished to do so, subject to the following conditions:
     12 *
     13 * The above copyright notice and this permission notice shall be included in
     14 * all copies or substantial portions of the Software.
     15 *
     16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
     19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
     22 * THE SOFTWARE.
     23 */
     24
     25#ifndef SNAPSHOT_H
     26#define SNAPSHOT_H
     27
     28#include "qapi/qapi-builtin-types.h"
     29
     30#define SNAPSHOT_OPT_BASE       "snapshot."
     31#define SNAPSHOT_OPT_ID         "snapshot.id"
     32#define SNAPSHOT_OPT_NAME       "snapshot.name"
     33
     34extern QemuOptsList internal_snapshot_opts;
     35
     36typedef struct QEMUSnapshotInfo {
     37    char id_str[128]; /* unique snapshot id */
     38    /* the following fields are informative. They are not needed for
     39       the consistency of the snapshot */
     40    char name[256]; /* user chosen name */
     41    uint64_t vm_state_size; /* VM state info size */
     42    uint32_t date_sec; /* UTC date of the snapshot */
     43    uint32_t date_nsec;
     44    uint64_t vm_clock_nsec; /* VM clock relative to boot */
     45    uint64_t icount; /* record/replay step */
     46} QEMUSnapshotInfo;
     47
     48int bdrv_snapshot_find(BlockDriverState *bs, QEMUSnapshotInfo *sn_info,
     49                       const char *name);
     50bool bdrv_snapshot_find_by_id_and_name(BlockDriverState *bs,
     51                                       const char *id,
     52                                       const char *name,
     53                                       QEMUSnapshotInfo *sn_info,
     54                                       Error **errp);
     55int bdrv_can_snapshot(BlockDriverState *bs);
     56int bdrv_snapshot_create(BlockDriverState *bs,
     57                         QEMUSnapshotInfo *sn_info);
     58int bdrv_snapshot_goto(BlockDriverState *bs,
     59                       const char *snapshot_id,
     60                       Error **errp);
     61int bdrv_snapshot_delete(BlockDriverState *bs,
     62                         const char *snapshot_id,
     63                         const char *name,
     64                         Error **errp);
     65int bdrv_snapshot_list(BlockDriverState *bs,
     66                       QEMUSnapshotInfo **psn_info);
     67int bdrv_snapshot_load_tmp(BlockDriverState *bs,
     68                           const char *snapshot_id,
     69                           const char *name,
     70                           Error **errp);
     71int bdrv_snapshot_load_tmp_by_id_or_name(BlockDriverState *bs,
     72                                         const char *id_or_name,
     73                                         Error **errp);
     74
     75
     76/* Group operations. All block drivers are involved.
     77 * These functions will properly handle dataplane (take aio_context_acquire
     78 * when appropriate for appropriate block drivers */
     79
     80bool bdrv_all_can_snapshot(bool has_devices, strList *devices,
     81                           Error **errp);
     82int bdrv_all_delete_snapshot(const char *name,
     83                             bool has_devices, strList *devices,
     84                             Error **errp);
     85int bdrv_all_goto_snapshot(const char *name,
     86                           bool has_devices, strList *devices,
     87                           Error **errp);
     88int bdrv_all_has_snapshot(const char *name,
     89                          bool has_devices, strList *devices,
     90                          Error **errp);
     91int bdrv_all_create_snapshot(QEMUSnapshotInfo *sn,
     92                             BlockDriverState *vm_state_bs,
     93                             uint64_t vm_state_size,
     94                             bool has_devices,
     95                             strList *devices,
     96                             Error **errp);
     97
     98BlockDriverState *bdrv_all_find_vmstate_bs(const char *vmstate_bs,
     99                                           bool has_devices, strList *devices,
    100                                           Error **errp);
    101
    102#endif