On 2011-10-18 11:43, Wen Congyang wrote:
> 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;
> };
So is this a standard format or only "similar" to something? Which tools
will understand it out-of-the-box? If it's not standard, why?
Jan
--
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux