At 10/18/2011 04:36 PM, Jan Kiszka Write: > On 2011-10-18 10:34, Richard W.M. Jones wrote: > > Yeah, I see. Could also be solved via gdb scripts, but crash is already > there. > > But let's see if the formats actually differ. In the end, crash is just > parsing the same information that also gdb sees.
I think the format can be similar with diskdump/kdump/netdump: dump_header: 1 block sub header: n blocks(n is stored in dump_header) bitmap: m blocks(2m is stored in dump_header) dumpable bitmap: m blocks memory data(We can know whether a page is stored in the core by bitmap and dumpable bitmap) The format of dump header(It's like kdump/diskdump): struct disk_dump_header { char signature[SIG_LEN]; /* = "QEMU " */ int header_version; /* Dump header version */ struct new_utsname utsname; /* copy of system_utsname */ struct timeval timestamp; /* Time stamp */ unsigned int status; int block_size; /* Size of a block in byte */ int sub_hdr_size; /* Size of arch dependent header in blocks */ unsigned int bitmap_blocks; /* Size of Memory bitmap in block */ unsigned int max_mapnr; /* = max_mapnr */ unsigned int total_ram_blocks;/* Number of blocks should be written */ unsigned int device_blocks; /* Number of total blocks in * the dump device */ unsigned int written_blocks; /* Number of written blocks */ unsigned int current_cpu; /* CPU# which handles dump */ int nr_cpus; /* Number of CPUs */ }; The sub header can contains all registers's value on each vcpu, and other information, for example: struct qemu_sub_header { unsigned long start_pfn; unsigned long end_pfn; off_t offset_note; unsigned long size_note; }; Thanks Wen Congyang > > Jan >