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
> 


Reply via email to