19c17d615SPaolo Bonzini /* 29c17d615SPaolo Bonzini * QEMU dump 39c17d615SPaolo Bonzini * 49c17d615SPaolo Bonzini * Copyright Fujitsu, Corp. 2011, 2012 59c17d615SPaolo Bonzini * 69c17d615SPaolo Bonzini * Authors: 79c17d615SPaolo Bonzini * Wen Congyang <wency@cn.fujitsu.com> 89c17d615SPaolo Bonzini * 99c17d615SPaolo Bonzini * This work is licensed under the terms of the GNU GPL, version 2 or later. 109c17d615SPaolo Bonzini * See the COPYING file in the top-level directory. 119c17d615SPaolo Bonzini * 129c17d615SPaolo Bonzini */ 139c17d615SPaolo Bonzini 149c17d615SPaolo Bonzini #ifndef DUMP_H 159c17d615SPaolo Bonzini #define DUMP_H 169c17d615SPaolo Bonzini 17fda05387Sqiaonuohan #define MAKEDUMPFILE_SIGNATURE "makedumpfile" 18fda05387Sqiaonuohan #define MAX_SIZE_MDF_HEADER (4096) /* max size of makedumpfile_header */ 19fda05387Sqiaonuohan #define TYPE_FLAT_HEADER (1) /* type of flattened format */ 20fda05387Sqiaonuohan #define VERSION_FLAT_HEADER (1) /* version of flattened format */ 21fda05387Sqiaonuohan #define END_FLAG_FLAT_HEADER (-1) 22fda05387Sqiaonuohan 23*7aad248dSqiaonuohan #define ARCH_PFN_OFFSET (0) 24*7aad248dSqiaonuohan 25*7aad248dSqiaonuohan #define paddr_to_pfn(X, page_shift) \ 26*7aad248dSqiaonuohan (((unsigned long long)(X) >> (page_shift)) - ARCH_PFN_OFFSET) 27*7aad248dSqiaonuohan #define pfn_to_paddr(X, page_shift) \ 28*7aad248dSqiaonuohan (((unsigned long long)(X) + ARCH_PFN_OFFSET) << (page_shift)) 29*7aad248dSqiaonuohan 309c17d615SPaolo Bonzini typedef struct ArchDumpInfo { 319c17d615SPaolo Bonzini int d_machine; /* Architecture */ 329c17d615SPaolo Bonzini int d_endian; /* ELFDATA2LSB or ELFDATA2MSB */ 339c17d615SPaolo Bonzini int d_class; /* ELFCLASS32 or ELFCLASS64 */ 349c17d615SPaolo Bonzini } ArchDumpInfo; 359c17d615SPaolo Bonzini 36fda05387Sqiaonuohan typedef struct QEMU_PACKED MakedumpfileHeader { 37fda05387Sqiaonuohan char signature[16]; /* = "makedumpfile" */ 38fda05387Sqiaonuohan int64_t type; 39fda05387Sqiaonuohan int64_t version; 40fda05387Sqiaonuohan } MakedumpfileHeader; 41fda05387Sqiaonuohan 42fda05387Sqiaonuohan typedef struct QEMU_PACKED MakedumpfileDataHeader { 43fda05387Sqiaonuohan int64_t offset; 44fda05387Sqiaonuohan int64_t buf_size; 45fda05387Sqiaonuohan } MakedumpfileDataHeader; 46fda05387Sqiaonuohan 4756c4bfb3SLaszlo Ersek struct GuestPhysBlockList; /* memory_mapping.h */ 4856c4bfb3SLaszlo Ersek int cpu_get_dump_info(ArchDumpInfo *info, 4956c4bfb3SLaszlo Ersek const struct GuestPhysBlockList *guest_phys_blocks); 509c17d615SPaolo Bonzini ssize_t cpu_get_note_size(int class, int machine, int nr_cpus); 519c17d615SPaolo Bonzini 529c17d615SPaolo Bonzini #endif 53