File:  [Qemu by Fabrice Bellard] / qemu / block.h
Revision 1.1.1.5 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:21:00 2018 UTC (2 years, 1 month ago) by root
Branches: qemu, MAIN
CVS tags: qemu0111, qemu0110, HEAD
qemu 0.11.0

    1: #ifndef BLOCK_H
    2: #define BLOCK_H
    3: 
    4: #include "qemu-aio.h"
    5: #include "qemu-common.h"
    6: #include "qemu-option.h"
    7: 
    8: /* block.c */
    9: typedef struct BlockDriver BlockDriver;
   10: 
   11: typedef struct BlockDriverInfo {
   12:     /* in bytes, 0 if irrelevant */
   13:     int cluster_size;
   14:     /* offset at which the VM state can be saved (0 if not possible) */
   15:     int64_t vm_state_offset;
   16: } BlockDriverInfo;
   17: 
   18: typedef struct QEMUSnapshotInfo {
   19:     char id_str[128]; /* unique snapshot id */
   20:     /* the following fields are informative. They are not needed for
   21:        the consistency of the snapshot */
   22:     char name[256]; /* user choosen name */
   23:     uint32_t vm_state_size; /* VM state info size */
   24:     uint32_t date_sec; /* UTC date of the snapshot */
   25:     uint32_t date_nsec;
   26:     uint64_t vm_clock_nsec; /* VM clock relative to boot */
   27: } QEMUSnapshotInfo;
   28: 
   29: #define BDRV_O_RDONLY      0x0000
   30: #define BDRV_O_RDWR        0x0002
   31: #define BDRV_O_ACCESS      0x0003
   32: #define BDRV_O_CREAT       0x0004 /* create an empty file */
   33: #define BDRV_O_SNAPSHOT    0x0008 /* open the file read only and save writes in a snapshot */
   34: #define BDRV_O_FILE        0x0010 /* open as a raw file (do not try to
   35:                                      use a disk image format on top of
   36:                                      it (default for
   37:                                      bdrv_file_open()) */
   38: #define BDRV_O_NOCACHE     0x0020 /* do not use the host page cache */
   39: #define BDRV_O_CACHE_WB    0x0040 /* use write-back caching */
   40: 
   41: #define BDRV_O_CACHE_MASK  (BDRV_O_NOCACHE | BDRV_O_CACHE_WB)
   42: 
   43: void bdrv_info(Monitor *mon);
   44: void bdrv_info_stats(Monitor *mon);
   45: 
   46: void bdrv_init(void);
   47: BlockDriver *bdrv_find_format(const char *format_name);
   48: int bdrv_create(BlockDriver *drv, const char* filename,
   49:     QEMUOptionParameter *options);
   50: int bdrv_create2(BlockDriver *drv,
   51:                  const char *filename, int64_t size_in_sectors,
   52:                  const char *backing_file, const char *backing_format,
   53:                  int flags);
   54: BlockDriverState *bdrv_new(const char *device_name);
   55: void bdrv_delete(BlockDriverState *bs);
   56: int bdrv_file_open(BlockDriverState **pbs, const char *filename, int flags);
   57: int bdrv_open(BlockDriverState *bs, const char *filename, int flags);
   58: int bdrv_open2(BlockDriverState *bs, const char *filename, int flags,
   59:                BlockDriver *drv);
   60: void bdrv_close(BlockDriverState *bs);
   61: int bdrv_check(BlockDriverState *bs);
   62: int bdrv_read(BlockDriverState *bs, int64_t sector_num,
   63:               uint8_t *buf, int nb_sectors);
   64: int bdrv_write(BlockDriverState *bs, int64_t sector_num,
   65:                const uint8_t *buf, int nb_sectors);
   66: int bdrv_pread(BlockDriverState *bs, int64_t offset,
   67:                void *buf, int count);
   68: int bdrv_pwrite(BlockDriverState *bs, int64_t offset,
   69:                 const void *buf, int count);
   70: int bdrv_truncate(BlockDriverState *bs, int64_t offset);
   71: int64_t bdrv_getlength(BlockDriverState *bs);
   72: void bdrv_get_geometry(BlockDriverState *bs, uint64_t *nb_sectors_ptr);
   73: void bdrv_guess_geometry(BlockDriverState *bs, int *pcyls, int *pheads, int *psecs);
   74: int bdrv_commit(BlockDriverState *bs);
   75: void bdrv_register(BlockDriver *bdrv);
   76: 
   77: /* async block I/O */
   78: typedef struct BlockDriverAIOCB BlockDriverAIOCB;
   79: typedef void BlockDriverCompletionFunc(void *opaque, int ret);
   80: 
   81: BlockDriverAIOCB *bdrv_aio_readv(BlockDriverState *bs, int64_t sector_num,
   82:                                  QEMUIOVector *iov, int nb_sectors,
   83:                                  BlockDriverCompletionFunc *cb, void *opaque);
   84: BlockDriverAIOCB *bdrv_aio_writev(BlockDriverState *bs, int64_t sector_num,
   85:                                   QEMUIOVector *iov, int nb_sectors,
   86:                                   BlockDriverCompletionFunc *cb, void *opaque);
   87: void bdrv_aio_cancel(BlockDriverAIOCB *acb);
   88: 
   89: /* sg packet commands */
   90: int bdrv_ioctl(BlockDriverState *bs, unsigned long int req, void *buf);
   91: BlockDriverAIOCB *bdrv_aio_ioctl(BlockDriverState *bs,
   92:         unsigned long int req, void *buf,
   93:         BlockDriverCompletionFunc *cb, void *opaque);
   94: 
   95: /* Ensure contents are flushed to disk.  */
   96: void bdrv_flush(BlockDriverState *bs);
   97: void bdrv_flush_all(void);
   98: 
   99: int bdrv_is_allocated(BlockDriverState *bs, int64_t sector_num, int nb_sectors,
  100: 	int *pnum);
  101: 
  102: #define BDRV_TYPE_HD     0
  103: #define BDRV_TYPE_CDROM  1
  104: #define BDRV_TYPE_FLOPPY 2
  105: #define BIOS_ATA_TRANSLATION_AUTO   0
  106: #define BIOS_ATA_TRANSLATION_NONE   1
  107: #define BIOS_ATA_TRANSLATION_LBA    2
  108: #define BIOS_ATA_TRANSLATION_LARGE  3
  109: #define BIOS_ATA_TRANSLATION_RECHS  4
  110: 
  111: void bdrv_set_geometry_hint(BlockDriverState *bs,
  112:                             int cyls, int heads, int secs);
  113: void bdrv_set_type_hint(BlockDriverState *bs, int type);
  114: void bdrv_set_translation_hint(BlockDriverState *bs, int translation);
  115: void bdrv_get_geometry_hint(BlockDriverState *bs,
  116:                             int *pcyls, int *pheads, int *psecs);
  117: int bdrv_get_type_hint(BlockDriverState *bs);
  118: int bdrv_get_translation_hint(BlockDriverState *bs);
  119: int bdrv_is_removable(BlockDriverState *bs);
  120: int bdrv_is_read_only(BlockDriverState *bs);
  121: int bdrv_is_sg(BlockDriverState *bs);
  122: int bdrv_is_inserted(BlockDriverState *bs);
  123: int bdrv_media_changed(BlockDriverState *bs);
  124: int bdrv_is_locked(BlockDriverState *bs);
  125: void bdrv_set_locked(BlockDriverState *bs, int locked);
  126: int bdrv_eject(BlockDriverState *bs, int eject_flag);
  127: void bdrv_set_change_cb(BlockDriverState *bs,
  128:                         void (*change_cb)(void *opaque), void *opaque);
  129: void bdrv_get_format(BlockDriverState *bs, char *buf, int buf_size);
  130: BlockDriverState *bdrv_find(const char *name);
  131: void bdrv_iterate(void (*it)(void *opaque, BlockDriverState *bs),
  132:                   void *opaque);
  133: int bdrv_is_encrypted(BlockDriverState *bs);
  134: int bdrv_key_required(BlockDriverState *bs);
  135: int bdrv_set_key(BlockDriverState *bs, const char *key);
  136: int bdrv_query_missing_keys(void);
  137: void bdrv_iterate_format(void (*it)(void *opaque, const char *name),
  138:                          void *opaque);
  139: const char *bdrv_get_device_name(BlockDriverState *bs);
  140: int bdrv_write_compressed(BlockDriverState *bs, int64_t sector_num,
  141:                           const uint8_t *buf, int nb_sectors);
  142: int bdrv_get_info(BlockDriverState *bs, BlockDriverInfo *bdi);
  143: 
  144: const char *bdrv_get_encrypted_filename(BlockDriverState *bs);
  145: void bdrv_get_backing_filename(BlockDriverState *bs,
  146:                                char *filename, int filename_size);
  147: int bdrv_snapshot_create(BlockDriverState *bs,
  148:                          QEMUSnapshotInfo *sn_info);
  149: int bdrv_snapshot_goto(BlockDriverState *bs,
  150:                        const char *snapshot_id);
  151: int bdrv_snapshot_delete(BlockDriverState *bs, const char *snapshot_id);
  152: int bdrv_snapshot_list(BlockDriverState *bs,
  153:                        QEMUSnapshotInfo **psn_info);
  154: char *bdrv_snapshot_dump(char *buf, int buf_size, QEMUSnapshotInfo *sn);
  155: 
  156: char *get_human_readable_size(char *buf, int buf_size, int64_t size);
  157: int path_is_absolute(const char *path);
  158: void path_combine(char *dest, int dest_size,
  159:                   const char *base_path,
  160:                   const char *filename);
  161: 
  162: int bdrv_save_vmstate(BlockDriverState *bs, const uint8_t *buf,
  163:                       int64_t pos, int size);
  164: 
  165: int bdrv_load_vmstate(BlockDriverState *bs, uint8_t *buf,
  166:                       int64_t pos, int size);
  167: 
  168: #endif

unix.superglobalmegacorp.com